《学习OpenCV(中文版)》第4章 练习1

void myGUI1a() {
	cvNamedWindow("Video");
	CvCapturecapture = cvCreateFileCapture("盲探.rm");
	IplImagein_frame;
	if(capture!=NULL) {
		in_frame = cvQueryFrame(capture);
		IplImageout_frame = cvCreateImage(cvGetSize(in_frame), in_frame->depth, 1);
		IplImageout_frame2 = cvCreateImage(cvGetSize(in_frame), in_frame->depth, 1);
		while(true) {
			in_frame = cvQueryFrame(capture);
			cvCvtColor(in_frameout_frameCV_RGB2GRAY);
			cvCanny(out_frameout_frame2, 10, 100, 3);
			cvShowImage("Video"out_frame2);
 
			if(cvWaitKey(33) == 27) break;
		}
	}
}
 
void myGUI1b() {
	cvNamedWindow("Video"CV_WINDOW_NORMAL);
	CvCapturecapture = cvCreateFileCapture("盲探.rm");
	IplImagein_frame;
	if(capture!=NULL) {
		in_frame = cvQueryFrame(capture);
		IplImagegray = cvCreateImage(cvGetSize(in_frame), in_frame->depth, 1);
		IplImageimgGray = cvCreateImage(cvGetSize(in_frame), in_frame->depth, 3);
		IplImagecanny = cvCreateImage(cvGetSize(in_frame), in_frame->depth, 1);
		IplImageimgCanny = cvCreateImage(cvGetSize(in_frame), in_frame->depth, 3);
		IplImageall_frame = cvCreateImage(cvSize(3*in_frame->widthin_frame->height), in_frame->depthin_frame->nChannels);
		cvZero(all_frame);
 
		IplImageimg1 = cvCreateImageHeader(cvGetSize(in_frame), in_frame->depth, 3);
		IplImageimg2 = cvCreateImageHeader(cvGetSize(in_frame), in_frame->depth, 3);
		IplImageimg3 = cvCreateImageHeader(cvGetSize(in_frame), in_frame->depth, 3);
		/*这些在声明的时候已经设置,origin默认
		img1->origin = in_frame->origin;
		img1->depth = in_frame->depth;
		img1->nChannels = 3;
		img2->origin = in_frame->origin;
		img2->depth = in_frame->depth;
		img2->nChannels = 3;
		img3->origin = in_frame->origin;
		img3->depth = in_frame->depth;
		img3->nChannels = 3;
		*/
		img1->widthStep = img2->widthStep = img3->widthStep = all_frame->widthStep;	//注意不要漏了这个
 
		while(true) {
			in_frame = cvQueryFrame(capture);
			if(in_frame == NULLbreak;
			cvCvtColor(in_framegrayCV_RGB2GRAY);
			cvCvtColor(grayimgGrayCV_GRAY2BGR);
 
			cvCanny(graycanny, 10, 100);
			cvCvtColor(cannyimgCannyCV_GRAY2BGR);
 
			//set position of imageData
			img1->imageData = all_frame->imageData;
			cvCopy(in_frameimg1);
 
			img2->imageData = all_frame->imageData + in_frame->widthStep;
			cvCopy(imgGrayimg2);
			//cvCopy(gray, img2);
 
			img3->imageData = all_frame->imageData + 2*in_frame->widthStep;
			cvCopy(imgCannyimg3);
			//cvCopy(canny, img3);
 
			CvFont textfont = cvFont(10.0, 1);
			cvInitFont(&textfontCV_FONT_HERSHEY_SIMPLEX, 0.5f, 0.5f, 0, 1);;
			cvPutText(all_frame"Source Image"cvPoint(10, 20), &textfontcvScalar(0, 0, 255));
			cvPutText(all_frame"Gray Image"cvPoint(in_frame->width + 10, 20), &textfontcvScalar(255, 0, 0));
			cvPutText(all_frame"Canny Image"cvPoint(2*in_frame->width + 10, 20), &textfontcvScalar(0, 255, 0));
 
			cvShowImage("Video"all_frame);
 
			if(cvWaitKey(33) == 27) break;
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值