




已阅读5页,还剩133页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OpenCV实例,OpenCV例程,常用的标准图图像文件读入和显示图像创建、保存和复制Canny边缘检测Canny边缘检测2轮廓(contour)检测轮廓(contour)检测2图像旋转与缩放读视频文件和运动物体检测Hough线段检测鼠标绘图snake轮廓例子,离散傅立叶变换(DFT)人脸检测QR分解绘制贝赛尔Bezier曲线使用DirectShow采集图像设定跟踪目标图片的改进摄像头标定施密特正交化高斯背景建模图像缩放高级图像处理初步,常用的标准图,Lena.jpg(90KB,MIMEtype:image/jpeg),Fruits.jpg(81KB,MIMEtype:image/jpeg),Baboon.jpg(176KB,MIMEtype:image/jpeg),Airplane.jpg(84KB,MIMEtype:image/jpeg),图像文件读入和显示,/*OpenCVexample*ByShiqiYu2006*/#includecv.h#includehighgui.hintmain(intargc,char*argv)IplImage*pImg;/声明IplImage指针/载入图像if(argc=2/创建窗口cvShowImage(Image,pImg);/显示图像cvWaitKey(0);/等待按键cvDestroyWindow(Image);/销毁窗口cvReleaseImage(,图像创建、保存和复制,/*cvLoadImage,cvSaveImage,cvCreateImage,cvCopy以及图像显示的例子*/*OpenCVexample*ByShiqiYu2006*/#includecv.h#includehighgui.hintmain(intargc,char*argv)IplImage*pImg;/声明IplImage指针,/载入图像,强制转化为Grayif(argc=3,Canny边缘检测,/*cvCanny:Canny边缘检测*/*OpenCVexample*ByShiqiYu2006*/#includecv.h#includecxcore.h#includehighgui.hintmain(intargc,char*argv)/声明IplImage指针IplImage*pImg=NULL;IplImage*pCannyImg=NULL;/载入图像,强制转化为Grayif(argc=2/canny边缘检测cvCanny(pImg,pCannyImg,50,150,3);/创建窗口cvNamedWindow(src,1);cvNamedWindow(canny,1);/显示图像cvShowImage(src,pImg);cvShowImage(canny,pCannyImg);cvWaitKey(0);/等待按键/销毁窗口cvDestroyWindow(src);cvDestroyWindow(canny);/释放图像cvReleaseImage(,Canny边缘检测2,运行结果:,代码:,#ifdef_CH_#pragmapackage#endif#ifndef_EiC#includecv.h#includehighgui.h#endifcharwndname=Edge;chartbarname=Threshold;IplImage*image=0,*cedge=0,*gray=0,*edge=0;,/defineatrackbarcallbackvoidon_trackbar(inth)cvSmooth(gray,edge,CV_BLUR,3,3,0,0);cvNot(gray,edge);/RuntheedgedetectorongrayscalecvCanny(gray,edge,(float)h,(float)h*3,3);cvZero(cedge);/copyedgepointscvCopy(image,cedge,edge);cvShowImage(wndname,cedge);,intmain(intargc,char*argv)char*filename=argc=2?argv1:(char*)fruits.jpg;intedge_thresh=1;if(image=cvLoadImage(filename,1)=0)return-1;/Createtheoutputimagecedge=cvCreateImage(cvSize(image-width,image-height),IPL_DEPTH_8U,3);/Converttograyscalegray=cvCreateImage(cvSize(image-width,image-height),IPL_DEPTH_8U,1);edge=cvCreateImage(cvSize(image-width,image-height),IPL_DEPTH_8U,1);cvCvtColor(image,gray,CV_BGR2GRAY);,/CreateawindowcvNamedWindow(wndname,1);/createatoolbarcvCreateTrackbar(tbarname,wndname,#endif,轮廓(contour)检测,/*轮廓检测*主要函数:*cvFindContours*cvDrawContours*/*OpenCVexample*ByShiqiYu2006*/#includecv.h#includecxcore.h#includehighgui.hintmain(intargc,char*argv)/声明IplImage指针IplImage*pImg=NULL;IplImage*pContourImg=NULL,CvMemStorage*storage=cvCreateMemStorage(0);CvSeq*contour=0;intmode=CV_RETR_EXTERNAL;if(argc=3)if(strcmp(argv2,all)=0)mode=CV_RETR_CCOMP;/内外轮廓都检测/创建窗口cvNamedWindow(src,1);cvNamedWindow(contour,1);/载入图像,强制转化为Grayif(argc=2/为轮廓显示图像申请空间/3通道图像,以便用彩色显示pContourImg=cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,3);/copysourceimageandconvertittoBGRimagecvCvtColor(pImg,pContourImg,CV_GRAY2BGR);/查找contourcvFindContours(pImg,storage,/将轮廓画出cvDrawContours(pContourImg,contour,CV_RGB(0,0,255),CV_RGB(255,0,0),2,2,8);/显示图像cvShowImage(contour,pContourImg);cvWaitKey(0);/销毁窗口cvDestroyWindow(src);cvDestroyWindow(contour);/释放图像cvReleaseImage(,轮廓(contour)检测2,运行结果:,代码,#ifdef_CH_#pragmapackage#endif#ifndef_EiC#includecv.h#includehighgui.h#include#endif#definew500intlevels=3;CvSeq*contours=0;,voidon_trackbar(intpos)IplImage*cnt_img=cvCreateImage(cvSize(w,w),8,3);CvSeq*_contours=contours;int_levels=levels-3;if(_levelsh_next-h_next-h_next;cvZero(cnt_img);cvDrawContours(cnt_img,_contours,CV_RGB(255,0,0),CV_RGB(0,255,0),_levels,3,CV_AA,cvPoint(0,0);cvShowImage(contours,cnt_img);cvReleaseImage(,intmain(intargc,char*argv)inti,j;CvMemStorage*storage=cvCreateMemStorage(0);IplImage*img=cvCreateImage(cvSize(w,w),8,1);cvZero(img);for(i=0;iwidth;inth=src-height;if(opt)/旋转加缩放factor=(cos(angle*CV_PI/180.)+1.0)*2;else,/仅仅旋转factor=1;m0=(float)(factor*cos(-angle*2*CV_PI/180.);m1=(float)(factor*sin(-angle*2*CV_PI/180.);m3=-m1;m4=m0;/将旋转中心移至图像中间m2=w*0.5f;m5=h*0.5f;/dst(x,y)=A*src(x,y)+bcvZero(dst);cvGetQuadrangleSubPix(src,dst,读视频文件和运动物体检测,/*背景建模,运动物体检测*/*OpenCVexample*ByShiqiYu2006*/#include#include#include#include,intmain(intargc,char*argv)/声明IplImage指针IplImage*pFrame=NULL;IplImage*pFrImg=NULL;IplImage*pBkImg=NULL;CvMat*pFrameMat=NULL;CvMat*pFrMat=NULL;CvMat*pBkMat=NULL;CvCapture*pCapture=NULL;intnFrmNum=0;,/创建窗口cvNamedWindow(video,1);cvNamedWindow(background,1);cvNamedWindow(foreground,1);/使窗口有序排列cvMoveWindow(video,30,0);cvMoveWindow(background,360,0);cvMoveWindow(foreground,690,0);,if(argc2)fprintf(stderr,Usage:bkgrdvideo_file_namen);return-1;/打开摄像头if(argc=1)if(!(pCapture=cvCaptureFromCAM(-1)fprintf(stderr,Cannotopencamera.n);return-2;/打开视频文件if(argc=2)if(!(pCapture=cvCaptureFromFile(argv1)fprintf(stderr,Cannotopenvideofile%sn,argv1);return-2;,/逐帧读取视频while(pFrame=cvQueryFrame(pCapture)nFrmNum+;/如果是第一帧,需要申请内存,并初始化if(nFrmNum=1)pBkImg=cvCreateImage(cvSize(pFrame-width,pFrame-height),IPL_DEPTH_8U,1);pFrImg=cvCreateImage(cvSize(pFrame-width,pFrame-height),IPL_DEPTH_8U,1);pBkMat=cvCreateMat(pFrame-height,pFrame-width,CV_32FC1);pFrMat=cvCreateMat(pFrame-height,pFrame-width,CV_32FC1);pFrameMat=cvCreateMat(pFrame-height,pFrame-width,CV_32FC1);,/转化成单通道图像再处理cvCvtColor(pFrame,pBkImg,CV_BGR2GRAY);cvCvtColor(pFrame,pFrImg,CV_BGR2GRAY);cvConvert(pFrImg,pFrameMat);cvConvert(pFrImg,pFrMat);cvConvert(pFrImg,pBkMat);elsecvCvtColor(pFrame,pFrImg,CV_BGR2GRAY);cvConvert(pFrImg,pFrameMat);/高斯滤波先,以平滑图像/cvSmooth(pFrameMat,pFrameMat,CV_GAUSSIAN,3,0,0);/当前帧跟背景图相减cvAbsDiff(pFrameMat,pBkMat,pFrMat);,/二值化前景图cvThreshold(pFrMat,pFrImg,60,255.0,CV_THRESH_BINARY);/进行形态学滤波,去掉噪音/cvErode(pFrImg,pFrImg,0,1);/cvDilate(pFrImg,pFrImg,0,1);/更新背景cvRunningAvg(pFrameMat,pBkMat,0.003,0);/将背景转化为图像格式,用以显示cvConvert(pBkMat,pBkImg);,/显示图像cvShowImage(video,pFrame);cvShowImage(background,pBkImg);cvShowImage(foreground,pFrImg);/如果有按键事件,则跳出循环/此等待也为cvShowImage函数提供时间完成显示/等待时间可以根据CPU速度调整if(cvWaitKey(2)=0)break;,/销毁窗口cvDestroyWindow(video);cvDestroyWindow(background);cvDestroyWindow(foreground);/释放图像和矩阵cvReleaseImage(,Hough线段检测,检测结果:,/*Thisisastandaloneprogram.Passanimagenameasafirstparameteroftheprogram.SwitchbetweenstandardandprobabilisticHoughtransformbychanging#if1to#if0andback*/#include#include#includeintmain(intargc,char*argv)constchar*filename=argc=2?argv1:pic1.png;IplImage*src=cvLoadImage(filename,0);IplImage*dst;IplImage*color_dst;CvMemStorage*storage=cvCreateMemStorage(0);CvSeq*lines=0;inti;,if(!src)return-1;dst=cvCreateImage(cvGetSize(src),8,1);color_dst=cvCreateImage(cvGetSize(src),8,3);cvCanny(src,dst,50,200,3);cvCvtColor(dst,color_dst,CV_GRAY2BGR);#if0lines=cvHoughLines2(dst,storage,CV_HOUGH_STANDARD,1,CV_PI/180,100,0,0);for(i=0;itotal,100);i+)float*line=(float*)cvGetSeqElem(lines,i);floatrho=line0;floattheta=line1;CvPointpt1,pt2;doublea=cos(theta),b=sin(theta);doublex0=a*rho,y0=b*rho;,pt1.x=cvRound(x0+1000*(-b);pt1.y=cvRound(y0+1000*(a);pt2.x=cvRound(x0-1000*(-b);pt2.y=cvRound(y0-1000*(a);cvLine(color_dst,pt1,pt2,CV_RGB(255,0,0),3,CV_AA,0);#elselines=cvHoughLines2(dst,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,50,50,10);for(i=0;itotal;i+)CvPoint*line=(CvPoint*)cvGetSeqElem(lines,i);cvLine(color_dst,line0,line1,CV_RGB(255,0,0),3,CV_AA,0);#endifcvNamedWindow(Source,1);cvShowImage(Source,src);cvNamedWindow(Hough,1);cvShowImage(Hough,color_dst);cvWaitKey(0);return0;,鼠标绘图,#ifdef_CH_#pragmapackage#endif#includecv.h#includehighgui.h#include#includeIplImage*inpaint_mask=0;IplImage*img0=0,*img=0,*inpainted=0;CvPointprev_pt=-1,-1;,voidon_mouse(intevent,intx,inty,intflags,void*zhang)if(!img)return;if(event=CV_EVENT_LBUTTONUP|!(flags,intmain(intargc,char*argv)char*filename=argc=2?argv1:(char*)fruits.jpg;if(img0=cvLoadImage(filename,-1)=0)return0;printf(Hotkeys:ntESC-quittheprogramntr-restoretheoriginalimagentiorENTER-runinpaintingalgorithmntt(beforerunningit,paintsomethingontheimage)n);cvNamedWindow(image,1);img=cvCloneImage(img0);inpainted=cvCloneImage(img0);inpaint_mask=cvCreateImage(cvGetSize(img),8,1);cvZero(inpaint_mask);cvZero(inpainted);cvShowImage(image,img);cvShowImage(watershedtransform,inpainted);cvSetMouseCallback(image,on_mouse,0);,for(;)intc=cvWaitKey(0);if(char)c=27)break;if(char)c=r)cvZero(inpaint_mask);cvCopy(img0,img,0);cvShowImage(image,img);if(char)c=i|(char)c=n)cvNamedWindow(inpaintedimage,1);cvInpaint(img,inpaint_mask,inpainted,3,CV_INPAINT_TELEA);cvShowImage(inpaintedimage,inpainted);return1;,Snake轮廓例子,opencv例子里没有提供cvsnakeimage的使用方法,在此整理一个例子,可以形象的看看snake算法的结果,大致做法是:首先设定域值分割,把基本的轮廓找出来,见图中蓝色轮廓线,再将轮廓点传入cvSnakeImage函数,计算出绿色的snake轮廓线。其中参数alpha代表点相互靠拢的权值(0-1.0),beta表示弯曲能量(越小越容易弯曲)(0-1.0),gamma表示整体能量(0-1.0)。其中参数我自己也不确定具体的范围,最好自己更改不同的范围试试.,程序运行结果,/TrainingTools.cpp:定义控制台应用程序的入口点。/#includestdafx.h#include#include#include#include#include#includeIplImage*image=0;/原始图像IplImage*image2=0;/原始图像copyusingnamespacestd;intThresholdness=141;intialpha=20;intibeta=20;intigamma=20;,voidonChange(intpos)if(image2)cvReleaseImage(,cvFindContours(image,storage,/显示轮廓曲线for(inti=0;i=2?argv1:lena.jpg;IplImage*im;IplImage*realInput;IplImage*imaginaryInput;IplImage*complexInput;intdft_M,dft_N;CvMat*dft_A,tmp;IplImage*image_Re;IplImage*image_Im;doublem,M;im=cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE);if(!im)return-1;,realInput=cvCreateImage(cvGetSize(im),IPL_DEPTH_64F,1);imaginaryInput=cvCreateImage(cvGetSize(im),IPL_DEPTH_64F,1);complexInput=cvCreateImage(cvGetSize(im),IPL_DEPTH_64F,2);cvScale(im,realInput,1.0,0.0);cvZero(imaginaryInput);cvMerge(realInput,imaginaryInput,NULL,NULL,complexInput);dft_M=cvGetOptimalDFTSize(im-height-1);dft_N=cvGetOptimalDFTSize(im-width-1);dft_A=cvCreateMat(dft_M,dft_N,CV_64FC2);image_Re=cvCreateImage(cvSize(dft_N,dft_M),IPL_DEPTH_64F,1);image_Im=cvCreateImage(cvSize(dft_N,dft_M),IPL_DEPTH_64F,1);,/copyAtodft_Aandpaddft_AwithzeroscvGetSubRect(dft_A,/SplitFourierinrealandimaginarypartscvSplit(dft_A,image_Re,image_Im,0,0);/ComputethemagnitudeofthespectrumMag=sqrt(Re2+Im2)cvPow(image_Re,image_Re,2.0);cvPow(image_Im,image_Im,2.0);cvAdd(image_Re,image_Im,image_Re,NULL);cvPow(image_Re,image_Re,0.5);/Computelog(1+Mag)cvAddS(image_Re,cvScalarAll(1.0),image_Re,NULL);/1+MagcvLog(image_Re,image_Re);/log(1+Mag)/RearrangethequadrantsofFourierimagesothattheoriginisat/theimagecentercvShiftDFT(image_Re,image_Re);cvMinMaxLoc(image_Re,人脸检测,本程序可以对输入的图像或者视频进行人脸检测,运行结果如下图:,#includecv.h#includehighgui.h#include#include#include#include#include#include#include#include#include#ifdef_EiC#defineWIN32#endifstaticCvMemStorage*storage=0;staticCvHaarClassifierCascade*cascade=0;voiddetect_and_draw(IplImage*image);constchar*cascade_name=haarcascade_frontalface_alt.xml;/*haarcascade_profileface.xml;*/,intmain(intargc,char*argv)CvCapture*capture=0;IplImage*frame,*frame_copy=0;intoptlen=strlen(-cascade=);constchar*input_name;if(argc1,if(!cascade)fprintf(stderr,ERROR:Couldnotloadclassifiercascaden);fprintf(stderr,Usage:facedetect-cascade=filename|camera_indexn);return-1;storage=cvCreateMemStorage(0);if(!input_name|(isdigit(input_name0),if(capture)for(;)if(!cvGrabFrame(capture)break;frame=cvRetrieveFrame(capture);if(!frame)break;if(!frame_copy)frame_copy=cvCreateImage(cvSize(frame-width,frame-height),IPL_DEPTH_8U,frame-nChannels);if(frame-origin=IPL_ORIGIN_TL)cvCopy(frame,frame_copy,0);elsecvFlip(frame,frame_copy,0);detect_and_draw(frame_copy);if(cvWaitKey(10)=0)break;cvReleaseImage(,elseconstchar*filename=input_name?input_name:(char*)lena.jpg;IplImage*image=cvLoadImage(filename,1);if(image)detect_and_draw(image);cvWaitKey(0);cvReleaseImage(,while(len0,voiddetect_and_draw(IplImage*img)staticCvScalarcolors=0,0,255,0,128,255,0,255,255,0,255,0,255,128,0,255,255,0,255,0,0,255,0,255;,doublescale=1.3;IplImage*gray=cvCreateImage(cvSize(img-width,img-height),8,1);IplImage*small_img=cvCreateImage(cvSize(cvRound(img-width/scale),cvRound(img-height/scale),8,1);inti;cvCvtColor(img,gray,CV_BGR2GRAY);cvResize(gray,small_img,CV_INTER_LINEAR);cvEqualizeHist(small_img,small_img);cvClearMemStorage(storage);,if(cascade)doublet=(double)cvGetTickCount();CvSeq*faces=cvHaarDetectObjects(small_img,cascade,storage,1.1,2,0/*CV_HAAR_DO_CANNY_PRUNING*/,cvSize(30,30);t=(double)cvGetTickCount()-t;printf(detectiontime=%gmsn,t/(double)cvGetTickFrequency()*1000.);for(i=0;itotal:0);i+)CvRect*r=(CvRect*)cvGetSeqElem(faces,i);CvPointcenter;intradius;center.x=cvRound(r-x+r-width*0.5)*scale);center.y=cvRound(r-y+r-height*0.5)*scale);radius=cvRound(r-width+r-height)*0.25*scale);cvCircle(img,center,radius,colorsi%8,3,8,0);cvShowImage(result,img);cvReleaseImage(,QR分解,#includestdafx.h#include#includeusingnamespacestd;#pragmacomment(lib,cxcore.lib)#pragmacomment(lib,highgui.lib)voidcvQR(CvMat*inputA,CvMat*q,CvMat*r)CvSizeinputSize=cvGetSize(inputA);intwidth=inputSize.width;intheight=inputSize.height;cvSetIdentity(q);cvCopy(inputA,r);vectormatMem;,CvMat*tempH=cvCreateMat(height,height,CV_32FC1);matMem.push_back(,floatval2=cvNorm(v);if(val2=0)continue;val2*=val2;val2=1/val2;cvTranspose(v,transV);cvMatMul(v,transV,tempH);/cvScale(tempH,tempH,2*val2);cvSetIdentity(iMat);/theidentitymatrixcvSub(iMat,tempH,iMat);cvCopy(iMat,tempH);/gettheHmatrixcvTranspose(tempH,tempH);/transposecvMatMul(q,tempH,q);/q=q.hcvGetCol(r,if(temp.rows=0|temp.cols=0)memcpy(temp.data.fl,b,sizeof(float);elsecvZero(,绘制贝赛尔Bezier曲线,在opencv下实现贝赛尔曲线.可以修改控制点,连接多条曲线,修改曲线精度等操作。程序示例如下:,/TrainingTools.cpp:定义控制台应用程序的入口点。/#includestdafx.h#include#include#include#include#include#includeusingnamespacestd;constintWW_MAX_MARK_COUNT=40;/最大40个控制点intmark_count=4;intconner_pt_index=-1;CvPoint3D32fControl_ptsWW_MAX_MARK_COUNT;IplImage*image=0;/原始图像boolis_showControlLines=true;,/两个向量相加,p=p+qCvPoint3D32fpointAdd(CvPoint3D32fp,CvPoint3D32fq)p.x+=q.x;p.y+=q.y;p.z+=q.z;returnp;/向量和标量相乘p=c*pCvPoint3D32fpointTimes(floatc,CvPoint3D32fp)p.x*=c;p.y*=c;p.z*=c;returnp;/计算贝塞尔方程的值/变量u的范围在0-1之间/P1*t3+P2*3*t2*(1-t)+P3*3*t*(1-t)2+P4*(1-t)3=PnewCvPoint3D32fBernstein(floatu,CvPoint3D32f*p)CvPoint3D32fa,b,c,d,r;a=pointTimes(pow(u,3),p0);b=pointTimes(3*pow(u,2)*(1-u),p1);c=pointTimes(3*u*pow(1-u),2),p2);d=pointTimes(pow(1-u),3),p3);r=pointAdd(pointAdd(a,b),pointAdd(c,d);returnr;,/画控制线voidDrawControlLine(CvPoint3D32f*p)CvPointpc4;for(inti=0;i4;i+)pci.x=(int)pi.x;pci.y=(int)pi.y;cvLine(image,pc0,pc1,CV_RGB(0,0,255),1,CV_AA,0);cvLine(image,pc2,pc3,CV_RGB(0,0,255),1,CV_AA,0);,/得到最近Control_pts的indexintgetNearPointIndex(CvPointmouse_pt)CvPointpt;for(inti=0;imark_count;i+)pt.x=mouse_pt.x-(int)Control_ptsi.x;pt.y=mouse_pt.y-(int)Control_ptsi.y;floatdistance=sqrt(float)(pt.x*pt.x+pt.y*pt.y);if(distance10)returni;return-1;,voidon_mouse(intevent,intx,inty,intflags,void*param)if(event=CV_EVENT_LBUTTONDOWN)CvPointpt=cvPoint(x,y);/cout-1)conner_pt_index=-1;elseconner_pt_index=getNearPointIndex(pt);/添加新的控制点if(conner_pt_index=-1)if(mark_count-1)Control_ptsconner_pt_index.x=(float)x;Control_ptsconner_pt_index.y=(float)y;,intmain(intargc,char*argv)CvSizeimage_sz=cvSize(1000,1000);image=cvCreateImage(image_sz,8,3);cvNamedWindow(Win,0);cvSetMouseCallback(Win,on_mouse,0);cvResizeWindow(Win,500,500);cout=BeziercurveDEMO=endl;coutendl;cout1.usemousetoclickcontrolpoint(red)toselectacontrolpointendl;cout2.usemousetomodifycontrolpointendl;cout3.clickmouseonsomewheretoaddacontrolpoint,addthreepointsforaddanewcurveendl;cout4.useW,Stoaddprecisionorreduceprecision.endl;cout5.pressZtoshowcontrolpoints.endl;cout=pressESCtoexit=endl,/初始化四个控制点Control_pts0.x=200;Control_pts0.y=200;Control_pts0.z=0;Control_pts1.x=300;Control_pts1.y=500;Control_pts1.z=0;Control_pts2.x=400;Control_pts2.y=560;Control_pts2.z=0;Control_pts3.x=500;Control_pts3.y=100;Control_pts3.z=0;intdivs=50;/控制精细度,for(;)CvPointpt_now,pt_pre;cvZero(image);/绘制控制点if(is_showControlLines)for(inti=0;imark_count;i+)CvPointptc;ptc.x=(int)Control_ptsi.x;ptc.y=(int)Control_ptsi.y;cvCircle(image,ptc,4,CV_RGB(255,0,0),1,CV_AA,0);,/绘制Bezier曲线CvPoint3D32f*pControls=Control_pts;for(intj=0;j0)cvLine(image,pt_now,pt_pre,CV_RGB(230,255,0),2,CV_AA,0);pt_pre=pt_now;,/画控制线if(is_showControlLines)DrawControlLine(pControls);pControls+=3;cvShowImage(Win,image);intkeyCode=cvWaitKey(20);if(keyCode=27)break;if(keyCode=w|keyCode=W)divs+=2;if(keyCode=s|keyCode=S)divs-=2;if(keyCode=z|keyCode=Z)is_showControlLines=is_showControlLines1;/coutprecision:divsSettingsfor:(Allconfigurations
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论