图像镜像之水平镜像

来源:互联网 发布:儿童编程先学什么 编辑:程序博客网 时间:2024/05/20 02:21

代码如下:

(一)三通道分开分别镜像代码如下:

void Ctry::OnTryTyr1(){ //TODO:  在此添加命令处理程序代码IplImage *img = cvLoadImage("C:\\Users\\Administrator\\Desktop\\3838.jpg");IplImage *mirror = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);IplImage* r = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);IplImage* g = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);IplImage* b = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);IplImage* r1 = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);IplImage* g1 = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);IplImage* b1 = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);cvSplit(img, b, g, r, NULL);double  temp1=0, temp2=0, temp3=0;int u = 0;for (int i = 0; i < r->width; i++){u = r->width - i - 1;for (int j = 0; j < r->height; j++){temp1 = cvGetReal2D(r, j , u);temp2 = cvGetReal2D(g, j , u);temp3 = cvGetReal2D(b, j , u);cvSetReal2D(r1, j, i, temp1);cvSetReal2D(g1, j, i, temp2);cvSetReal2D(b1, j, i, temp3);}}cvMerge(b1, g1, r1, 0, mirror);cvNamedWindow("move", CV_WINDOW_AUTOSIZE);cvShowImage("move", mirror);cvSaveImage("C:\\Users\\Administrator\\Desktop\\mirror.jpg", mirror);cvNamedWindow("img", CV_WINDOW_AUTOSIZE);cvShowImage("img", img);cvWaitKey(0);cvReleaseImage(&img);cvReleaseImage(&r);cvReleaseImage(&g);cvReleaseImage(&b);cvReleaseImage(&r1);cvReleaseImage(&g1);cvReleaseImage(&b1);cvReleaseImage(&mirror);cvDestroyWindow("move");cvDestroyWindow("img");}

(二)直接总体镜像代码如下:

void Ctry::OnTryTyr1(){ //TODO:  在此添加命令处理程序代码IplImage *img = cvLoadImage("C:\\Users\\Administrator\\Desktop\\3838.jpg");IplImage *mirror = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);CvScalar pixel;int u = 0;for (int i = 0; i < img->width; i++){u = img->width - i - 1;for (int j = 0; j < img->height; j++){pixel = cvGet2D(img, j, u);cvSet2D(mirror, j, i, pixel);}}cvNamedWindow("mirror", CV_WINDOW_AUTOSIZE);cvShowImage("mirror", mirror);cvSaveImage("C:\\Users\\Administrator\\Desktop\\mirror.jpg", mirror);cvNamedWindow("img", CV_WINDOW_AUTOSIZE);cvShowImage("img", img);cvWaitKey(0);cvReleaseImage(&img);cvReleaseImage(&mirror);cvDestroyWindow("mirror");cvDestroyWindow("img");}

效果图:

 

0 0
原创粉丝点击