OpenCV汇总Word下载.docx

上传人:b****6 文档编号:22338248 上传时间:2023-02-03 格式:DOCX 页数:122 大小:1.60MB
下载 相关 举报
OpenCV汇总Word下载.docx_第1页
第1页 / 共122页
OpenCV汇总Word下载.docx_第2页
第2页 / 共122页
OpenCV汇总Word下载.docx_第3页
第3页 / 共122页
OpenCV汇总Word下载.docx_第4页
第4页 / 共122页
OpenCV汇总Word下载.docx_第5页
第5页 / 共122页
点击查看更多>>
下载资源
资源描述

OpenCV汇总Word下载.docx

《OpenCV汇总Word下载.docx》由会员分享,可在线阅读,更多相关《OpenCV汇总Word下载.docx(122页珍藏版)》请在冰豆网上搜索。

OpenCV汇总Word下载.docx

准备工作:

你得把opencv库装到电脑上,并把各种头文件,源文件,lib库都连到vc上,然后设置一下系统环境变量,这里这方面就不说了,好像我前面的文章有说过,不懂也可XX一下。

建立一个基于WIN32控制台的工程CameraUSB,在新建一个c++元文件,写代码:

#include"

cxcore.h"

cvcam.h"

windows.h"

highgui.h"

voidcallback(IplImage*image);

intmain()

{

intncams=cvcamGetCamerasCount();

//返回可以访问的摄像头数目

HWNDMyWin;

 

//设置系统属性

cvcamSetProperty(0,CVCAM_PROP_ENABLE,CVCAMTRUE);

//选择第一个摄像头 

//camera

cvcamSetProperty(0,CVCAM_PROP_RENDER,CVCAMTRUE);

//We'

llrenderstream

//在本例中

//假设创建一个窗口,并且窗口的ID是在变量MyWin中定义

//MyWin是窗口HWND的类型

MyWin=(HWND)cvGetWindowHandle("

CameraUSBwindow"

);

cvcamSetProperty(0,CVCAM_PROP_WINDOW,&

MyWin);

//Selectsawindowfor

//videorendering

//回调函数将处理每一帧

cvcamSetProperty(0,CVCAM_PROP_CALLBACK,callback);

cvcamInit();

cvcamStart();

//现在程序开始工作

cvWaitKey(0);

cvcamStop();

cvcamExit();

return0;

}

//在图像中画兰色水平线

voidcallback(IplImage*image)

IplImage*image1=image;

inti,j;

assert(image);

for(i=0;

i<

image1->

height;

i+=10)

{

for(j=(image1->

widthStep)*i;

j<

(image1->

widthStep)*(i+1);

j+=image1->

nChannels)

image1->

imageData[j] 

=(char)255;

imageData[j+1]=0;

imageData[j+2]=0;

}

}

嘿嘿,就这么简单就完事了。

不懂可留言问

基于opencv的两个摄像头数据的采集

实现功能:

同时采集两路USB摄像头数据,并显示,具有图片保存功能(点击左键保存图片,并暂停视频;

右键继续视频)。

步骤就不说了,很简单,直接放代码了:

#include<

cvcam.h>

cv.h>

highgui.h>

stdio.h"

windows.h>

voidStereoCallback(IplImage*frame1,IplImage*frame2);

voidonMouse1(intEvent,intx,inty,intflags,void*param);

voidonMouse2(intEvent,intx,inty,intflags,void*param);

IplImage*image1,*image2;

char*strleft[4]={"

left1.bmp"

"

left2.bmp"

left3.bmp"

left4.bmp"

};

char*strright[4]={"

right1.bmp"

right2.bmp"

right3.bmp"

right4.bmp"

voidmain()

HWNDCaptureWindow1=0;

//不赋值也行

HWNDCaptureWindow2=0;

//intncams=cvcamGetCamerasCount();

//获取摄像头的个数,在这里可有可无

//用对话框的形式来选取摄像头

int*CameraNumber;

intnSelected=cvcamSelectCamera(&

CameraNumber);

/*//灰色图像

image1=cvCreateImage(cvSize(320,240),IPL_DEPTH_8U,1);

image2=cvCreateImage(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("

cvcam1Window"

1);

CaptureWindow1=(HWND)cvGetWindowHandle("

cvcamSetProperty(CameraNumber[0],CVCAM_PROP_ENABLE,CVCAMTRUE);

cvcamSetProperty(CameraNumber[0],CVCAM_PROP_RENDER,CVCAMTRUE);

cvcamSetProperty(CameraNumber[0],CVCAM_PROP_WINDOW,&

CaptureWindow1);

//cvSetMouseCallback("

onMouse1,0);

cvcam2Window"

CaptureWindow2=(HWND)cvGetWindowHandle("

cvcamSetProperty(CameraNumber[1],CVCAM_PROP_ENABLE,CVCAMTRUE);

cvcamSetProperty(CameraNumber[1],CVCAM_PROP_RENDER,CVCAMTRUE);

cvcamSetProperty(CameraNumber[1],CVCAM_PROP_WINDOW,&

CaptureWindow2);

onMouse2,0);

//让两个摄像头同步

cvcamSetProperty(CameraNumber[0],CVCAM_STEREO_CALLBACK,(void*)&

StereoCallback);

//启动程序

cvcamInit();

cvcamStart();

cvSetMouseCallback("

cvcamStop();

free(CameraNumber);

cvcamExit();

cvDestroyWindow("

voidStereoCallback(IplImage*frame1,IplImage*frame2)

/* 

//把图像转换成灰度图并保存到image中

cvCvtColor(frame1,image1,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);

voidonMouse1(intEvent,intx,inty,intflags,void*param)

staticintnum=0;

if(Event==CV_EVENT_LBUTTONDOWN)

if(num==4)num=0;

//只是固定定义了保存4张图片,为了不让程序非法而设置的复原

cvcamPause();

//图像保存

cvSaveImage(strleft[num],image1);

//cvSaveImage(strright[num],image2);

//cvSaveImage("

left.bmp"

image1);

right.bmp"

image2);

if(Event==CV_EVENT_RBUTTONDOWN)

cvcamResume();

num++;

voidonMouse2(intEvent,intx,inty,intflags,void*param)

// 

cvSaveImage(strright[num],image2);

能激发你用代码做视频的冲动程序

这个程序是基于opencv的,连接库就不说了,直接建立一个基于win32的控制台程序,写代码就OK了。

/*程序名:

drawing..c

功能:

展示OpenCV的图像绘制功能

cv.h"

stdlib.h>

stdio.h>

#defineNUMBER100

#defineDELAY5

charwndname[]="

DrawingDemo"

;

CvScalarrandom_color(CvRNG*rng)//函数cvRNG初始化随机数生成器并返回其状态,RNG随机数生成器

inticolor=cvRandInt(rng);

//函数cvRandInt返回均匀分布的随机32-bit无符号整型值并更新RNG状态

returnCV_RGB(icolor&

255,(icolor>

>

8)&

16)&

255);

//创建一个色彩值

intmain(intargc,char**argv)

intline_type=CV_AA;

//changeitto8toseenon-antialiasedgraphics

inti;

CvPointpt1,pt2;

//基于二维整形坐标轴的点

doubleangle;

CvSizesz;

//矩形框大小,以像素为精度

CvPointptt[6];

CvPoint*pt[2];

intarr[2];

CvFontfont;

CvRNGrng;

intwidth=1000,height=700;

intwidth3=width*3,height3=height*3;

CvSizetext_size;

intymin=0;

//Loadthesourceimage

IplImage*image=cvCreateImage(cvSize(width,height),8,3);

IplImage*image2;

//Createawindow

cvNamedWindow(wndname,1);

cvZero(image);

//#definecvZerocvSetZero 

voidcvSetZero(CvArr*arr);

arr要被清空数组

cvShowImage(wndname,image);

rng=cvRNG((unsigned)-1);

pt[0]=&

(ptt[0]);

pt[1]=&

(ptt[3]);

arr[0]=3;

arr[1]=3;

for(i=0;

NUMBER;

i++)

pt1.x=cvRandInt(&

rng)%width3-width;

pt1.y=cvRandInt(&

rng)%height3-height;

pt2.x=cvRandInt(&

pt2.y=cvRandInt(&

cvLine(image,pt1,pt2,random_color(&

rng),cvRandInt(&

rng)%10,line_type,0);

//绘制连接两个点的线段

cvWaitKey(DELAY);

cvRectangle(image,pt1,pt2,random_color(&

rng)%10-1,line_type,0);

//绘制简单、指定粗细或者带填充的矩形

sz.width=cvRandInt(&

rng)%200;

sz.height=cvRandInt(&

angle=(cvRandInt(&

rng)%1000)*0.180;

cvEllipse(image,pt1,sz,angle,angle-100,angle+200,

random_color(&

//函数cvEllipse用来绘制或者填充一个简单的椭圆弧或椭圆扇形

pt[0][0].x=cvRandInt(&

pt[0][0].y=cvRandInt(&

pt[0][1].x=cvRandInt(&

pt[0][1].y=cvRandInt(&

pt[0][2].x=cvRandInt(&

pt[0][2].y=cvRandInt(&

pt[1][0].x=cvRandInt(&

pt[1][0].y=cvRandInt(&

pt[1][1].x=cvRandInt(&

pt[1][1].y=cvRandInt(&

pt[1][2].x=cvRandInt(&

pt[1][2].y=cvRandInt(&

cvPolyLine(image,pt,arr,2,1,random_color(&

//函数cvPolyLine绘制一个简单的或多样的多角曲线

cvFillPoly(image,pt,arr,2,random_color(&

rng),line_type,0);

//函数cvFillPoly用于一个单独被多变形轮廓所限定的区域内进行填充

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

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

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