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

加入VIP,省得不是一点点
 

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

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

下载须知

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

版权提示 | 免责声明

本文(OpenCV例程汇总.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

OpenCV例程汇总.doc

1、OpenCV 例程汇总基于 opencv 的 use 摄像头视频采集程序 .1基于 opencv 的两个摄像头数据采集 .3能激发你用代码做视频的冲动程序 .6图像反转(就是把黑的变白,白的变黑) .11图像格式的转换 .12从摄像头或者 AVI 文件中得到视频流,对视频流进行边缘检测 .13采用 Canny 算子进行边缘检测 .15角点检测 .18图像的旋转加缩放(效果很拽,用地球做就像谷歌地球似的) .21Log-Polar 极坐标变换 .22对图像进行形态学操作(图像的开闭,腐蚀和膨胀运算) .24用不同的核进行图像的二维滤波 .27图像域的填充 .30寻找轮廓实现视频流的运动目标检测(

2、超推荐一下) .35采用金字塔方法进行图像分割 .40图像的亮度变换 .43单通道图像的直方图 .46计算和显示彩色图像的二维色调-饱和度图像 .48图像的直方图均匀化 .50用 Hongh 变换检测线段 .52利用 Hough 变换检测圆(是圆不是椭圆) .57距离变换 .59椭圆曲线拟合 .64由点集序列或数组创建凸外形 .68Delaunay 三角形和 Voronoi 划分的迭代式构造 .71利用背景建模检测运动物体(推荐) .78运动模板检测(摄像头) .81显示如何利用 Camshift 算法进行彩色目标的跟踪 .86基于 opencv 的 use 摄像头视频采集程序准备工作:你得把

3、 opencv 库装到电脑上,并把各种头文件,源文件,lib 库都连到 vc 上,然后设置一下系统环境变量,这里这方面就不说了,好像我前面的文章有说过,不懂也可百度一下。建立一个基于 WIN32 控制台的工程 CameraUSB,在新建一个 c+元文件,写代码:#include “cxcore.h“#include “cvcam.h“#include “windows.h“#include “highgui.h“void callback(IplImage* image);int main()int ncams=cvcamGetCamerasCount( );/返回可以访问的摄像头数目HWND

4、 MyWin;/ 设置系统属性cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); /选择第一个摄像头/cameracvcamSetProperty(0, CVCAM_PROP_RENDER, CVCAMTRUE); /Well render stream/ 在本例中/ 假设创建一个窗口,并且窗口的 ID 是在变量 MyWin 中定义/ MyWin 是窗口 HWND 的类型MyWin=(HWND)cvGetWindowHandle(“CameraUSB window“); cvcamSetProperty(0,CVCAM_PROP_WINDOW,

5、 / Selects a window for /video rendering/回调函数将处理每一帧cvcamSetProperty(0,CVCAM_PROP_CALLBACK,callback);cvcamInit( );cvcamStart( );/ 现在程序开始工作cvWaitKey(0);cvcamStop( );cvcamExit( );return 0;/ 在图像中画兰色水平线void callback(IplImage* image)IplImage* image1 = image;int i,j;assert (image);for(i=0; iheight; i+=10)f

6、or(j=(image1-widthStep)*i; jwidthStep)*(i+1); j+=image1-nChannels)image1-imageDataj = (char)255;image1-imageDataj+1 = 0;image1-imageDataj+2 = 0; 嘿嘿,就这么简单就完事了。不懂可留言问基于 opencv 的两个摄像头数据采集实现功能:同时采集两路 USB 摄像头数据,并显示,具有图片保存功能(点击左键保存图片,并暂停视频;右键继续视频)。步骤就不说了,很简单,直接放代码了:#include #include #include #include “std

7、io.h“#include void StereoCallback(IplImage *frame1,IplImage *frame2);void onMouse1(int Event,int x,int y,int flags,void *param);void onMouse2(int Event,int x,int y,int flags,void *param);IplImage *image1,*image2;char *strleft4=“left1.bmp“,“left2.bmp“,“left3.bmp“,“left4.bmp“;char *strright4=“right1.b

8、mp“,“right2.bmp“,“right3.bmp“,“right4.bmp“;void main()HWND CaptureWindow1=0; /不赋值也行HWND CaptureWindow2=0;/int ncams=cvcamGetCamerasCount(); /获取摄像头的个数,在这里可有可无/用对话框的形式来选取摄像头int *CameraNumber;int nSelected = cvcamSelectCamera(/* /灰色图像image1=cvCreateImage(cvSize(320,240),IPL_DEPTH_8U,1);image2=cvCreateI

9、mage(cvSize(320,240),IPL_DEPTH_8U,1);*/彩色图像image1=cvCreateImage(cvSize(320,240),IPL_DEPTH_8U,3);image2=cvCreateImage(cvSize(320,240),IPL_DEPTH_8U,3);/初始化两个摄像头cvNamedWindow(“cvcam1 Window“,1);CaptureWindow1=(HWND)cvGetWindowHandle(“cvcam1 Window“);cvcamSetProperty(CameraNumber0, CVCAM_PROP_ENABLE, CV

10、CAMTRUE);cvcamSetProperty(CameraNumber0, CVCAM_PROP_RENDER, CVCAMTRUE);cvcamSetProperty(CameraNumber0, CVCAM_PROP_WINDOW, / cvSetMouseCallback(“cvcam1 Window“,onMouse1,0);cvNamedWindow(“cvcam2 Window“,1);CaptureWindow2=(HWND)cvGetWindowHandle(“cvcam2 Window“);cvcamSetProperty(CameraNumber1, CVCAM_PR

11、OP_ENABLE, CVCAMTRUE);cvcamSetProperty(CameraNumber1, CVCAM_PROP_RENDER, CVCAMTRUE);cvcamSetProperty(CameraNumber1, CVCAM_PROP_WINDOW, / cvSetMouseCallback(“cvcam2 Window“,onMouse2,0);/让两个摄像头同步 cvcamSetProperty(CameraNumber0,CVCAM_STEREO_CALLBACK,(void*) /启动程序cvcamInit();cvcamStart();cvSetMouseCallb

12、ack(“cvcam1 Window“,onMouse1,0);cvSetMouseCallback(“cvcam2 Window“,onMouse2,0);cvWaitKey(0);cvcamStop();free(CameraNumber);cvcamExit();cvDestroyWindow(“cvcam1 Window“);cvDestroyWindow(“cvcam2 Window“);void StereoCallback(IplImage* frame1,IplImage *frame2)/* /把图像转换成灰度图并保存到 image 中cvCvtColor(frame1,im

13、age1,CV_RGB2GRAY);cvCvtColor(frame2,image2,CV_RGB2GRAY);*/拷贝图像到全局变量 image 中 该函数这样用存在问题 / cvCopy(frame1,image1);/ cvCopy(frame2,image2);image1=cvCloneImage(frame1);image2=cvCloneImage(frame2);/对截取的图像翻转cvFlip(image1,image1,0);cvFlip(image2,image2,0);void onMouse1(int Event,int x,int y,int flags,void *

14、param)static int num=0;if(Event=CV_EVENT_LBUTTONDOWN)if(num=4)num=0;/只是固定定义了保存 4 张图片,为了不让程序非法而设置的复原cvcamPause();/图像保存cvSaveImage(strleftnum,image1); / cvSaveImage(strrightnum,image2);/ cvSaveImage(“left.bmp“,image1);/ cvSaveImage(“right.bmp“,image2);if(Event=CV_EVENT_RBUTTONDOWN)cvcamResume();num+;v

15、oid onMouse2(int Event,int x,int y,int flags,void *param)static int num=0;if(Event=CV_EVENT_LBUTTONDOWN)if(num=4)num=0;/只是固定定义了保存 4 张图片,为了不让程序非法而设置的复原cvcamPause();/图像保存/ cvSaveImage(strleftnum,image1); cvSaveImage(strrightnum,image2);/ cvSaveImage(“left.bmp“,image1);/ cvSaveImage(“right.bmp“,image2)

16、;if(Event=CV_EVENT_RBUTTONDOWN)cvcamResume();num+;能激发你用代码做视频的冲动程序这个程序是基于 opencv 的,连接库就不说了,直接建立一个基于 win32 的控制台程序,写代码就 OK 了。/* 程序名:drawing.c功能:展示 OpenCV 的图像绘制功能*/#include “cv.h“#include “highgui.h“#include #include #define NUMBER 100#define DELAY 5char wndname = “Drawing Demo“;CvScalar random_color(Cv

17、RNG* rng) /函数 cvRNG 初始化随机数生成器并返回其状态,RNG 随机数生成器int icolor = cvRandInt(rng); /函数 cvRandInt 返回均匀分布的随机 32-bit 无符号整型值并更新 RNG 状态return CV_RGB(icolor /创建 一个色彩值int main( int argc, char* argv )int line_type = CV_AA; / change it to 8 to see non-antialiased graphicsint i;CvPoint pt1,pt2; /基于二维整形坐标轴的点double ang

18、le;CvSize sz; /矩形框大小,以像素为精度CvPoint ptt6;CvPoint* pt2;int arr2;CvFont font;CvRNG rng;int width = 1000, height = 700;int width3 = width*3, height3 = height*3;CvSize text_size;int ymin = 0;/ Load the source imageIplImage* image = cvCreateImage( cvSize(width,height), 8, 3 );IplImage* image2;/ Create a w

19、indowcvNamedWindow(wndname, 1 );cvZero( image ); /#define cvZero cvSetZero void cvSetZero( CvArr* arr ); arr 要被清空数组cvShowImage(wndname,image);rng = cvRNG(unsigned)-1);pt0 = pt1 = arr0 = 3;arr1 = 3;for (i = 0; i NUMBER; i+)pt1.x=cvRandInt(pt1.y=cvRandInt(pt2.x=cvRandInt(pt2.y=cvRandInt(cvLine( image,

20、 pt1, pt2, random_color(/绘制连接两个点的线段 cvShowImage(wndname,image);cvWaitKey(DELAY);for (i = 0; i NUMBER; i+)pt1.x=cvRandInt(pt1.y=cvRandInt(pt2.x=cvRandInt(pt2.y=cvRandInt(cvRectangle( image,pt1, pt2, random_color(/绘制简单、指定粗细或者带填充的 矩形cvShowImage(wndname,image);cvWaitKey(DELAY);for (i = 0; i NUMBER; i+)p

21、t1.x=cvRandInt(pt1.y=cvRandInt(sz.width =cvRandInt(sz.height=cvRandInt(angle = (cvRandInt(cvEllipse( image, pt1, sz, angle, angle - 100, angle + 200,random_color(/函数 cvEllipse 用来绘制或者填充一个简单的椭圆弧或椭圆扇形cvShowImage(wndname,image);cvWaitKey(DELAY);for (i = 0; i NUMBER; i+)pt00.x=cvRandInt(pt00.y=cvRandInt(

22、pt01.x=cvRandInt(pt01.y=cvRandInt(pt02.x=cvRandInt(pt02.y=cvRandInt(pt10.x=cvRandInt(pt10.y=cvRandInt(pt11.x=cvRandInt(pt11.y=cvRandInt(pt12.x=cvRandInt(pt12.y=cvRandInt(cvPolyLine( image, pt, arr, 2, 1, random_color(/函数 cvPolyLine 绘制一个简单的或多样的多角曲线cvShowImage(wndname,image);cvWaitKey(DELAY);for (i =

23、0; i NUMBER; i+)pt00.x=cvRandInt(pt00.y=cvRandInt(pt01.x=cvRandInt(pt01.y=cvRandInt(pt02.x=cvRandInt(pt02.y=cvRandInt(pt10.x=cvRandInt(pt10.y=cvRandInt(pt11.x=cvRandInt(pt11.y=cvRandInt(pt12.x=cvRandInt(pt12.y=cvRandInt(cvFillPoly( image, pt, arr, 2, random_color(/函数 cvFillPoly 用于一个单独被多变形轮廓所限定的区域内进行

24、填充cvShowImage(wndname,image);cvWaitKey(DELAY);for (i = 0; i NUMBER; i+)pt1.x=cvRandInt(pt1.y=cvRandInt(cvCircle( image, pt1, cvRandInt(/函数cvCircle 绘制或填充一个给定圆心和半径的圆cvShowImage(wndname,image);cvWaitKey(DELAY);for (i = 1; i NUMBER; i+)pt1.x=cvRandInt(pt1.y=cvRandInt(cvInitFont( /字体结构初始化。函数 cvRound, cvF

25、loor, cvCeil 用一种舍入方法将输入浮点数转换成整数。 cvRound 返回和参数最接近的整数值cvPutText( image, “Northeast Petroleum University!“, pt1, /在图像中加入文本cvShowImage(wndname,image);cvWaitKey(DELAY);cvInitFont( cvGetTextSize( “Opencv forever!“, /设置字符串文本的宽度和高度pt1.x = (width - text_size.width)/2;pt1.y = (height + text_size.height)/2;image2 = cvCloneImage(image);for( i = 0; i 255; i+ )cvSubS( image2, cvScalarAll(i), image, 0 );/函数 cvSubS 从原数组的每个元素中减去一个数量cvPutText( image, “shentuhongfeng forever!“, pt1, cvShowImage(wndname,image);cvWaitKey(DELAY);

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。