学习Opencv 第四章课后习题解答(Exercise 1a)

本文档详细介绍了如何使用OpenCV进行视频读取、灰度转换及Canny边缘检测的步骤,并展示了每个阶段处理结果的窗口显示。
摘要由CSDN通过智能技术生成

题目内容:

a. Create a program that (1)reads frames from a video, (2) turns the result to grayscale,

and (3) performs Canny edge detection on the image.Display all three

stages of processing in three diff erent windows,with each window appropriately

named for its function.

程序:

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"

IplImage* Canny(IplImage* img ,double lowThread,double highThread,double aperture)//边缘检测,使用canny算子
{
	if(img->nChannels!=1)
	{
		return NULL;
	}

	IplImage* out =cvCreateImage(cvGetSize(img),img->depth,1);
	cvCanny(img,out,lowThread,highThread,aperture);
	return (out);
}
IplImage* colorchange(IplImage* in)//单通道灰度图像转变
{
	IplImage* out = cvCreateImage(cvGetSize(in),in->depth,1);
	cvCvtColor(in,out,CV_RGB2GRAY);

	return (out);
}


int main(int argc,char** argv)
{
	CvCapture* capture = NULL;
	IplImage* frame=NULL;
	IplImage* gray=NULL;
	IplImage* canny=NULL;

	cvNamedWindow("Primary",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("Gray",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("Canny",CV_WINDOW_AUTOSIZE);

	capture = cvCreateFileCapture("d:\\opencv\\test1.avi");

	while (1)
	{
		frame=cvQueryFrame(capture);
		if (!frame)
		{	
			break;
		}
		cvShowImage("Primary",frame);
		gray=colorchange(frame);
		cvShowImage("Gray",gray);
		canny = Canny(gray,120,160,3);
		cvShowImage("Canny",canny);
		
	    if (cvWaitKey(33)==27)
	    {
			break;
	    }
	}
    #if 1   /*测试*/
	cvSaveImage("d:\\opencv\\experiment\\frame.jpg",frame);
	cvSaveImage("d:\\opencv\\experiment\\gray.jpg",gray);
	cvSaveImage("d:\\opencv\\experiment\\canny.jpg",canny);
    #endif
	cvReleaseCapture(&capture);
	cvDestroyWindow("Primary");
	cvDestroyWindow("Gray");
	cvDestroyWindow("Canny");
 
	return 0;
}


实验结果:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值