图像镜像之水平镜像

代码如下:

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

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");
}

效果图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值