【VC图像处理】 图像水平镜像,垂直镜像,图像转置
2016-05-19 20:22
453 查看
#include "opencv2/core/core.hpp" #include"opencv2/highgui/highgui.hpp" #include<opencv2/opencv.hpp> #include "iostream" using namespace std; using namespace cv; void OnMirror_X(Mat img,Mat &OutImg) { int Width=img.cols; int Height=img.rows; OutImg.create(Height,Width,img.type()); for(int i=0;i<Height;i++) for(int j=0;j<Width/2;j++) { if(img.channels()==1) { OutImg.at<uchar>(i,j)=img.at<uchar>(i,Width-j-1); OutImg.at<uchar>(i,(Width-j-1))=img.at<uchar>(i,j); } else if(img.channels()==3) { OutImg.at<Vec3b>(i,j)=img.at<Vec3b>(i,Width-j-1); OutImg.at<Vec3b>(i,Width-j-1)=img.at<Vec3b>(i,j); } } } void OnMirror_Y(Mat img,Mat &OutImg) { int Width=img.cols; int Height=img.rows; OutImg.create(Height,Width,img.type()); for(int i=0;i<Height/2;i++) for(int j=0;j<Width;j++) { if(img.channels()==1) { OutImg.at<uchar>(i,j)=img.at<uchar>(Height-i-1,j); //一开始没加-1 内存老报错!!!~~~ 细心啊 OutImg.at<uchar>(Height-i-1,j)=img.at<uchar>(i,j); } else if(img.channels()==3) { OutImg.at<Vec3b>(i,j)=img.at<Vec3b>(Height-i-1,j); OutImg.at<Vec3b>(Height-i-1,j)=img.at<Vec3b>(i,j); } }}
<pre name="code" class="cpp">void Transpose(Mat img,Mat &OutImg) // 图像转置 { int Width=img.cols; int Height=img.rows; OutImg.create(Width,Height,img.type());//注意这里的长、宽 for(int i=0;i<Width;i++) //注意这里的顺序 for(int j=0;j<Height;j++) { if(img.channels()==1) { OutImg.at<uchar>(i,j)=img.at<uchar>(j,i); } else if(img.channels()==3) { OutImg.at<Vec3b>(i,j)=img.at<Vec3b>(j,i); } } }
void main() { Mat SrcImg=imread("C:\\Users\\Administrator\\Desktop\\工作\\testp\\01.jpg"); if(!SrcImg.data) cout<<"读取图片错误\n"; Mat ResultImg1,ResultImg2; OnMirror_X(SrcImg,ResultImg1); OnMirror_Y(SrcImg,ResultImg2); imshow("X",ResultImg1); imshow("Y",ResultImg2); imshow("src",SrcImg); waitKey(0); }
相关文章推荐
- PHP GD 图像处理组件的常用函数总结
- PHP图像处理之imagecreate、imagedestroy函数介绍
- jsvascript图像处理―(计算机视觉应用)图像金字塔
- Javascript图像处理思路及实现代码
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- PHP图像处理之使用imagecolorallocate()函数设置颜色例子
- java数字图像处理基础使用imageio写图像文件示例
- 使用Java进行图像处理的一些基础操作
- javascript图像处理―边缘梯度计算函数
- Javascript图像处理―阈值函数实例应用
- Javascript图像处理―虚拟边缘介绍及使用方法
- Android Studio中配置OpenCV库开发环境的教程
- 基于C++实现kinect+opencv 获取深度及彩色数据
- OpenCV 2.4.3 C++ 平滑处理分析
- PHP图像处理类库及演示分享
- CI框架文件上传类及图像处理类用法分析
- php图像处理函数大全(推荐收藏)
- Javascript图像处理―图像形态学(膨胀与腐蚀)