ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:957.62KB ,
资源ID:12369146      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12369146.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《学习opencv》123章部分习题参考程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《学习opencv》123章部分习题参考程序.docx

1、学习opencv123章部分习题参考程序习题解答 2.1 利用Microsoft Visual Studio 2010打开D:OpenCV2.1VS2010 OpenCV.sln文件,如图1示。在“Solution Configuration”下选择“Debug”模式,右击解决方案,选择“Build Solution”进行编译,编译结束后结果显示如图2示。再次右击文件“INSTALL”,选择“Rebuild Solution”进行再编译,编译后结果显示如图3示。同理,“Release”模式和“Debug”模式操作相同(示图略)。这样就产生了“Debug”和“Release”两个版本的库文件。图

2、1 载入解决方案OpenCV.sln图2 编译解决方案图3 再编译INSTALL2.2创建工程:Move实验,导入文件lkdemo.c,如图4示。在PC机上安装摄像头,编译工程,运行程序如图5示。键入“r”后显示图像如图6示;键入“n”后显示图像如图7示。图4 创建工程图5 运行程序结果显示图6 跟踪初始化显示图7 夜间模式跟踪2.3 #include cv.h#include highgui.hIplImage *DoPyDown(IplImage *in,int fliter = IPL_GAUSSIAN_5x5);main(int argc, char *argv) CvCapture

3、* capture = 0; /创建窗口,显示缩放前的文件 cvNamedWindow(AVI_Example,1); /创建窗口,显示缩放后的文件 cvNamedWindow(AVI_After); /选择是从摄像头中读取还是从文件中读取 if(argc=1) capture = cvCreateCameraCapture(0); else capture = cvCreateFileCapture(m.avi); assert(capture!=NULL);/和下一句if作用相同 if (!capture) return -1; IplImage* bgr_frame = cvQueryF

4、rame(capture); double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS); /得到要写入视频的宽高数据 CvSize size = cvSize(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH)/2, (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)/2 ); /下一句创建一个写入设备以便将视频流写入视频文件 CvVideoWriter* writer = cvCreateVideo

5、Writer(lgc.avi,-1,fps,size); IplImage* OutImage; IplImage* logpolar_frame = cvCreateImage(size,IPL_DEPTH_8U,3); /判断逐帧读取是否为空(是否读完) while(bgr_frame=cvQueryFrame(capture)!=NULL) /对视频进行转换,用此函数后录制的文件变形 cvLogPolar(bgr_frame, logpolar_frame, cvPoint2D32f(bgr_frame-width/2,bgr_frame-height/2), 40,CV_INTER_L

6、INEAR+CV_WARP_FILL_OUTLIERS ); OutImage = DoPyDown(bgr_frame); /对图像进行翻转 cvConvertImage(OutImage,OutImage,CV_CVTIMG_FLIP); /将处理后的视频写入文件 cvWriteFrame(writer,OutImage); /显示视频 cvShowImage(AVI_Example,bgr_frame); /显示缩放后的视频 cvShowImage(AVI_After,OutImage/*logpolar_frame*/); /等待键盘事件 char c=cvWaitKey(1); if

7、 (27=c) break; /释放资源 cvReleaseVideoWriter(&writer); cvReleaseImage(&bgr_frame); cvReleaseImage(&OutImage); cvReleaseCapture(&capture); /销毁窗口 cvDestroyWindow(AVI_Example); return(0);/自定义函数的实现IplImage *DoPyDown(IplImage *in,int fliter/* = IPL_GAUSSIAN_5x5*/) IplImage *out=cvCreateImage( cvSize(in-widt

8、h/2,in-height/2), in-depth, in-nChannels); cvPyrDown(in,out,IPL_GAUSSIAN_5x5); return (out);3.1 #include stdio.h#include cxcore.h#include cv.h#include cxtypes.h/连接lib文件#pragma comment(lib,cv.lib)#pragma comment(lib,cvcam.lib)#pragma comment(lib,cxcore.lib)#pragma comment(lib,highgui.lib)int main(int

9、 argc,char*argv) printf(* a:给定一个负数,求其绝对值,四舍五入之后,求其极值n); double fushu = -12.6345; printf(给定的数:%fn,fushu); double f=fabs(fushu); printf(其绝对值:%fn,f); /四舍五入之后:cvRound()函数, int m = cvRound(f); printf(四舍五入之后:%dn,m); printf(n* b:产生一些随机数:n); int rng; CvRNG rng = cvRNG(); for (int i=0;i50;i+) /调用cvRandInt()函

10、数,产生随机数 printf(%d ,(uchar)cvRandInt(&rng); printf(n); /* c Cvpoint2D32f类型到 CvPoint 类型的转换 printf(n* c: Cvpoint2D32f 类型到 CvPoint 类型的转换:n); CvPoint2D32f cpf; cpf=cvPoint2D32f(34.23564423,64.2545656); printf(%f,%fn,cpf.x,cpf.y); CvPoint cp=cvPointFrom32f(cpf); printf(%d,%dn,cp.x,cp.y); /* d CvPoint 类型到

11、CvPoint2D32f类型的转换 printf(n* d:CvPoint类型到 CvPoint2D32f类型的转换:n); /定义CvPoint类型变量并调用构造函数初始化 CvPoint point=cvPoint(234,53); printf(转换前的数据:%d,%dn,point.x,point.y); /把CvPoint类型转换为CvPoint2D32f类型:cvPointTo2D32f函数 CvPoint2D32f cpoint=cvPointTo32f(point); printf(转换后的数据:%f,%fnn,cpoint.x,cpoint.y); return 0;3.2

12、源代码如下:#include #include int main()/ IplImage* srcImg = NULL; CvMat* srcMat = cvCreateMat(100, 100, CV_8UC3); /100*100 3通道字节型 cvSetZero(srcMat); /清零 CvPoint cirPoint = cvPoint(50, 50); /圆心 int radius = 40;/半径 CvScalar cirColor = cvScalar(255, 0,0 );/蓝色 cvCircle(srcMat, cirPoint, radius, cirColor); /画

13、圆 cvNamedWindow(Exam302); cvShowImage(Exam302, (IplImage*)srcMat); cvWaitKey(0); cvReleaseMat(&srcMat); cvDestroyWindow(Exam302); return 0;编译运行结果如图8示。图8 绘制图形3.3源代码如下:#include #include int main() CvMat* srcMat = cvCreateMat(100, 100, CV_8UC3); /100*100 cvZero(srcMat); cvRectangle(IplImage*)srcMat, cv

14、Point(20, 5), cvPoint(40, 20), cvScalar(0, 255, 0); cvNamedWindow(Rectangle); cvShowImage(Rectangle, srcMat); cvWaitKey(0); cvReleaseMat(&srcMat); cvDestroyWindow(Rectangle); return 0;编译运行结果如图9示。图9 绘制矩形3.5源代码如下:#include cv.h#include highgui.hint main() IplImage* single_img = cvCreateImage(cvSize(210

15、, 210), 8, 1);/210*210 单通道 cvZero(single_img); int Width = 210, Height = 210; int maxPixel =200; int value = 0; int i, j; for(i = 0, j = 0; i = Width, j = Height;) / for(i = 0; i = Width;) / cvSetImageROI(single_img, cvRect(i, j, Width - i, Height - j); /set the ROI of the single_img / cvSetImageROI

16、(single_img, cvRect(0, 0, Width, Height); cvSet(single_img, cvScalar(value, 0, 0); value += 20; cvResetImageROI(single_img); / i += 10;/边界都为10个像素宽度 j += 10; if(value = maxPixel)/超过最大像素值200时,退出 break; cvNamedWindow(ROI, 0); cvShowImage(ROI, single_img); cvWaitKey(0); cvDestroyWindow(ROI); cvReleaseIm

17、age(&single_img); return 0;编译运行结果如图10示。图10 ROI3.7 源代码如下:#include #include int main() char* filePath = D:/图片库/Baboon.jpg; IplImage* srcImg = cvLoadImage(filePath); /load the image if(!srcImg) printf(cannot open the file.n); return -1; IplImage* rImg = cvCreateImage(cvGetSize(srcImg), srcImg-depth, 1)

18、; IplImage* gImg = cvCreateImage(cvGetSize(srcImg), srcImg-depth, 1); IplImage* bImg = cvCreateImage(cvGetSize(srcImg), srcImg-depth, 1); /创建单通道r,g,b图像 IplImage* clone1 = cvCreateImage(cvGetSize(srcImg), srcImg-depth, 1); IplImage* clone2 = cvCreateImage(cvGetSize(srcImg), srcImg-depth, 1); double g

19、reen_maxPixel = 0; double green_minPixel = 0; /绿色平面最大最小值 double thresh; /阈值thresh cvSplit(srcImg, rImg, gImg, bImg, 0); /拆分3通道 /-a小题 - cvNamedWindow(GreenImage0); cvShowImage(GreenImage0, gImg); /-b小题- cvCopy(gImg, clone1); cvCopy(gImg, clone2); /copy the gImg to clone1 and clone2 /-c小题求绿色平面最大最小值- c

20、vMinMaxLoc(gImg, &green_maxPixel, &green_minPixel); /-d小题- thresh = (unsigned char)(green_maxPixel - green_minPixel) / 2.0; cvSet(clone1, cvScalar(thresh); /-e小题- cvZero(clone2); cvCmp(gImg, clone1, clone2, CV_CMP_GE); /-f小题- cvSubS(gImg, cvScalar(thresh / 2), gImg, clone2); cvNamedWindow(GreenImage1); cvShowImage(GreenImage1, gImg); cvWaitKey(0); cvReleaseImage(&srcImg); cvReleaseImage(&rImg); cvReleaseImage(&gImg); cvReleaseImage(&bImg); cvDestroyWindow(GreenImage0); cvDestroyWindow(GreenImage1); return 0;编译运行结果如图11示。图11注:本实验环境在Microsoft Visual C+2010,Opencv2.2下完成

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1