版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
什么是OpenCV開源C/C++ 計算機視覺庫.面向?qū)崟r應(yīng)用進(jìn)行優(yōu)化.跨操作系統(tǒng)/硬件窗口管理器./視頻載入、存儲和獲取.由中、高層API構(gòu)成.為Intel? 公司的IntegratedPerformancePrimitives(IPP) 提供了透明接口.特性:
圖像數(shù)據(jù)操作(分配,釋放,復(fù)制,設(shè)定, 轉(zhuǎn)換).圖像與視頻 I/O(基于文件/攝像頭輸入,圖像/視頻文件輸出).矩陣與向量操作與線性代數(shù)計算 (相乘,求解,特征值,奇異值分解SVD).各種動態(tài)數(shù)據(jù)結(jié)構(gòu)(列表, 隊列, 集,樹,圖).基本圖像處理(濾波,邊緣檢測, 角點檢測,采樣與插值, 色彩轉(zhuǎn)換, 形態(tài)操作,直方圖,圖像金字塔).結(jié)構(gòu)分析(連接成分,輪廓處理, ,模板匹配,Hough 轉(zhuǎn)換,多邊形近似,線性擬合, 三角化).攝像頭標(biāo)定(尋找并跟蹤標(biāo)定模板,標(biāo)定, 基礎(chǔ)矩陣估計,homography 估計,立).
動作分析(光流, 動作分割,跟蹤).對象辨識(特征方法,隱馬可夫鏈模型 HMM).基本GUI(顯示圖像/視頻,鍵盤鼠標(biāo)操作, 滾動條).圖像標(biāo)識(直線, 圓錐, 多邊形, 文本繪圖)OpenCV 模塊:cv-OpenCV .cvaux -輔助(實驗性)OpenCV 函數(shù).cxcore - 數(shù)據(jù)結(jié)構(gòu)與線性代數(shù)算法.highgui -GUI 函數(shù).資料鏈接參考手冊:<opencv-root>/docs/index.htm網(wǎng)絡(luò)資源:官方網(wǎng)頁:/technology/computing/opencv/軟件下載:/projects/opencvlibrary/書籍:OpenSourceComputerVisionLibrarybyGaryR.Bradski,VadimPisarevsky,andJean-YvesBouguet,Springer ,1sted.(June,2006).視頻處理例程(位于<opencv-root>/samples/c/ 目錄中)::camshiftdemo點跟蹤:lkdemo:motempl:laplace圖像處理例程(位于<opencv-root>/samples/c/ 目錄中)::edge分割:pyramid_segmentation形態(tài):morphology直方圖:demhist橢圓擬合fitellipseOpenCV 命名約定函數(shù)命名:cvActionTarget[Mod](...)Action=核心功能(例如設(shè)定set, 創(chuàng)建create)Target=[Mod]=操作目標(biāo)(例如輪廓contour,可選修飾詞(例如說明參數(shù)類型多邊形)polygon):CV_<bit_depth>(S|U|F)C<number_of_channels>S=帶符號整數(shù)U=無符號整數(shù)F=浮點數(shù)例: CV_8UC1 表示一個8位無符號單通道矩陣,CV_32FC2 表示一個32位浮點雙通道矩陣.圖像數(shù)據(jù)類型:IPL_DEPTH_<bit_depth>(S|U|F)例: IPL_DEPTH_8U 表示一個8位無符號圖像.IPL_DEPTH_32F 表示一個32.頭文件:#include<cv.h>#include<cvaux.h>#include<highgui.h>#include<cxcore.h> // 不必要- 該頭文件已在cv.h 文件中包含編譯命令Linux 系統(tǒng):g++hello-world.cpp-ohello-world\-I/usr/local/include/opencv-L/usr/local/lib\-lm-lcv-lhighgui-lcvauxWindows 系統(tǒng):注意在項目屬性中設(shè)好OpenCV頭文件以及庫文件的路徑.C程序?qū)嵗?///////////////////////////////////////////////////////////////////////////hello-world.cpp//// 一個簡單的OpenCV 程序// 它從一個文件中讀取圖像,將色彩值顛倒,并顯示結(jié)果 .//////////////////////////////////////////////////////////////////////////#include<stdlib.h>#include<stdio.h>#include<math.h>#include<cv.h>#include<highgui.h>intmain(intargc,char*argv[]){IplImage*img=0;uchar*data;inti,j,k;if(argc<2){printf("Usage:main<image-file-name>\n\7");exit(0);}// 載入圖像if(!img){printf("Couldnotloadimagefile:%s\n",argv[1]);exit(0);}// 獲取圖像數(shù)據(jù)height =img->height;width =img->width;step =img->widthStep;channels =img->nChannels;data =(uchar*)img->imageData;printf("Processinga%dx%dimagewith%dchannels\n",height,width,channels);// 創(chuàng)建窗口cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE);cvMoveWindow("mainWin",100,100);// 反色圖像for(i=0;i<height;i++)for(j=0;j<width;j++)for(k=0;k<channels;k++)data[i*step+j*channels+k]=255-data[i*step+j*channels+k];// 顯示圖像cvShowImage("mainWin",img);//waitforakeycvWaitKey(0);//releasetheimagecvReleaseImage(&img);return0;}GUI 命令窗口管理創(chuàng)建并放置一個窗口:cvNamedWindow("win1",CV_WINDOW_AUTOSIZE);cvMoveWindow("win1",100100) 讀入圖像:IplImage *img=0;if(!img)printf("Couldnotloadimagefile:%s\n",fileName);顯示圖像:cvShowImage("win1",img);可顯示彩色或灰度的字節(jié)/浮點圖像。彩色圖像數(shù)據(jù)認(rèn)定為BGR順序.關(guān)閉窗口:cvDestroyWindow("win1");:cvResizeWindow( "win1",100,100);// 新的寬高值象素點)輸入設(shè)備響應(yīng)鼠標(biāo)事件:定義鼠標(biāo)handler:void mouseHandler(int event, int x, int y, int flags, void* param){switch(event){caseCV_EVENT_LBUTTONDOWN:if(flags&CV_EVENT_FLAG_CTRLKEY)printf("LeftbuttondownwithCTRLpressed\n");break;caseCV_EVENT_LBUTTONUP:printf("Leftbuttonup\n");break;}}//x,y: 針對左上角的像點坐標(biāo)//event:CV_EVENT_LBUTTONDOWN, CV_EVENT_MBUTTONDOWN,// CV_EVENT_LBUTTONUP, CV_EVENT_MBUTTONUP,// CV_EVENT_LBUTTONDBLCLK,CV_EVENT_RBUTTONDBLCLK,CV_EVENT_MBUTTONDBLCLK,// CV_EVENT_MOUSEMOVE://flags:CV_EVENT_FLAG_CTRLKEY,CV_EVENT_FLAG_SHIFTKEY,CV_EVENT_FLAG_ALTKEY,// CV_EVENT_FLAG_LBUTTON,CV_EVENT_FLAG_RBUTTON,CV_EVENT_FLAG_MBUTTONhandler:mouseParam=5;cvSetMouseCallback("win1",mouseHandler,&mouseParam);響應(yīng)鍵盤事件:鍵盤沒有事件handler.直接獲取鍵盤操作:intkey;key=cvWaitKey(10);// 10ms等待按鍵并獲取鍵盤操作 :intkey;key=cvWaitKey(0);// 無限等待鍵盤輸入鍵盤輸入循環(huán):while(1){key=cvWaitKey(10);if(key==27)break;switch(key){case'h':...case'i':...break;}}處理滾動條事件:定義滾動條handler:voidtrackbarHandler(intpos){printf("Trackbarposition:%d\n",pos);}handler:inttrackbarVal=25;intmaxVal=100;cvCreateTrackbar("bar1","win1",&trackbarVal,maxVal,trackbarHandler);獲取滾動條當(dāng)前位置:intpos=cvGetTrackbarPos("bar1","win1");設(shè)定滾動條位置:cvSetTrackbarPos("bar1","win1",25);OpenCV 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)圖像數(shù)據(jù)結(jié)構(gòu)|--int|--int|--int|--intnChannels;depth;////色彩通道數(shù)(1,2,3,4):|//IPL_DEPTH_8U,IPL_DEPTH_8S,|//IPL_DEPTH_16U,IPL_DEPTH_16S,|//IPL_DEPTH_32S,IPL_DEPTH_32F,|//IPL_DEPTH_64F|--intwidth;// 圖像寬度(象素點數(shù))|--intheight;// 圖像高度(象素點數(shù))|--char*imageData; // 指針指向成一列排列的圖像數(shù)據(jù)| // 注意色彩順序為BGR|--intdataOrder; //0 彩色通道交叉存取BGRBGRBGR,| //1 彩色通道分隔存取BBBGGGRRR| // 只能創(chuàng)建交叉存取的圖像|--intorigin; //0 ,| //1 格式)|--intwidthStep; // 每行圖像數(shù)據(jù)所占字節(jié)大小|--intimageSize; // 圖像數(shù)據(jù)所占字節(jié)大小= 高度*每行圖像數(shù)據(jù)字節(jié)大小|--struct_IplROI*roi;// ROI.NULL則表示需要處理的圖像| // 區(qū)域.|--char*imageDataOrigin 指針指向圖像數(shù)據(jù)原點| //( 用來校準(zhǔn)圖像存儲單元的重新分配)||--intalign; // 圖像行校準(zhǔn):4 或8字節(jié)校準(zhǔn)| //OpenCV 不采用它而使用widthStep|--charcolorModel[4];// 圖像色彩模型- 矩陣與向量矩陣:CvMat //2 維數(shù)組|--inttype;//(uchar,short,int,float,double)|--intstep;//一行所占字節(jié)長度|--int rows,cols; // 尺寸大小|--int heightwidth 備用尺寸參照|--uniondata;|--uchar* ptr; // 針對unsignedchar 矩陣的數(shù)據(jù)指針|--short* s; // 針對short 矩陣的數(shù)據(jù)指針|--int* i; // 針對integer 矩陣的數(shù)據(jù)指針|--float* fl; // 針對float 矩陣的數(shù)據(jù)指針|--double*db; // 針對double 矩陣的數(shù)據(jù)指針CvMatND N- 維數(shù)組|--inttype;//(uchar,short,int,float,double)|--intdims;//數(shù)組維數(shù)|--uniondata;||--uchar*ptr;//針對unsignedchar矩陣的數(shù)據(jù)指針||--short*s;//針對short矩陣的數(shù)據(jù)指針||--int*i;//針對integer矩陣的數(shù)據(jù)指針||--float*fl;//針對float矩陣的數(shù)據(jù)指針| |--double*db; // 針對double矩陣的數(shù)據(jù)指針||--structdim[]; // 每個維的信息|--size;//該維內(nèi)元素個數(shù)|--step;//該維內(nèi)元素之間偏移量CvSparseMat :CvArr* // 僅作為函數(shù)參數(shù),說明函數(shù)接受多種類型的數(shù)組,例如:// IplImage*,CvMat* CvSeq*.// 只需通過分析數(shù)組頭部的前4字節(jié)便可確定數(shù)組類型標(biāo)量:CvScalar|--doubleval[4];//4D 向量:CvScalars=cvScalar(doubleval0,doubleval1=0,doubleval2=0,doubleval3=0);舉例:CvScalars=cvScalar(20.0);s.val[0]=10.0;注意:初始化函數(shù)與數(shù)據(jù)結(jié)構(gòu)同名,只是首字母小寫 .它不是C++ 的構(gòu)造函數(shù).其他數(shù)據(jù)結(jié)構(gòu)點:CvPoint p=cvPoint(intx,inty);CvPoint2D32fp=cvPoint2D32f(floatx,floaty);CvPoint3D32fp=cvPoint3D32f(floatx,floaty,floatz);例如:p.x=5.0;p.y=5.0;:CvSize r=cvSize(intwidth,intheight);CvSize2D32fr=cvSize2D32f(floatwidth,floatheight);帶偏移量的長方形尺寸:CvRect r=cvRect(intx,inty,intwidth,intheight);圖像處理分配圖像空間:IplImage*cvCreateImage(CvSizesize,intdepth,intchannels);size:cvSize(width,height);depth:IPL_DEPTH_8U,IPL_DEPTH_8S,IPL_DEPTH_16U,IPL_DEPTH_16S,IPL_DEPTH_32S,IPL_DEPTH_32F,IPL_DEPTH_64Fchannels:1,2,3or4.注意數(shù)據(jù)為交叉存取彩色圖像的數(shù)據(jù)編排為b0g0r0b1g1r1...舉例:// 分配一個單通道字節(jié)圖像IplImage*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);// 分配一個三通道浮點圖像IplImage*img2=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);釋放圖像空間:cvReleaseImage(&img);:IplImage*img2;img2=cvCloneImage(img1);設(shè)定獲取興趣區(qū)域:voidcvSetImageROI(IplImage*image,CvRectrect);voidcvResetImageROI(IplImage*image);vRectcvGetImageROI(constIplImage*image);設(shè)定獲取興趣通道:voidcvSetImageCOI(IplImage*image,intcoi);//0=allintcvGetImageCOI(constIplImage*image);函數(shù)暫不支持讀取存儲圖像從文件中載入圖像:IplImage*img=0;if(!img)printf("Couldnotloadimagefile:%s\n",fileName);Supported imageformats: SR,RAS,TIFF,TIF載入圖像默認(rèn)轉(zhuǎn)為 3通道彩色圖像.如果不是,則需加flag:img=cvLoadImage(fileName,flag);flag:>0 載入圖像轉(zhuǎn)為三通道彩色圖像=0 載入圖像轉(zhuǎn)為單通道灰度圖像<0 不轉(zhuǎn)換載入圖像通道數(shù)與圖像文件相同).圖像存儲為圖像文件:if(!cvSaveImage(outFileName,img))printf("Couldnotsave:%s\n",outFileName);輸入文件格式由文件擴(kuò)展名決定.存取圖像元素假設(shè)需要讀取在i行j列像點的第k通道.其中, 行數(shù)i的范圍為[0,height-1],width-1], 間接存取:(比較通用, 但效率低,可讀取任一類型圖像數(shù)據(jù) )對單通道字節(jié)圖像:CvScalars;s=cvGet2D(img,i,j);//getthe(i,j)pixelvalueprintf("intensity=%f\n",s.val[0]);s.val[0]=111;cvSet2D(img,i,j,s);//setthe(i,j)pixelvalue對多通道浮點或字節(jié)圖像:CvScalars;s=cvGet2D(img,i,j);//getthe(i,j)pixelvalueprintf("B=%f,G=%f,R=%f\n",s.val[0],s.val[1],s.val[2]);s.val[0]=111;s.val[1]=111;s.val[2]=111;cvSet2D(img,i,j,s);//setthe(i,j)pixelvalue直接存取:(效率高, 但容易出錯)對單通道字節(jié)圖像:((uchar*) (img->imageData+i*img->widthStep))[j]=111;對多通道字節(jié)圖像:IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);((uchar*)(img->imageData+i*img->widthStep))[j*img->nChannels+0]=111;//B((uchar*)(img->imageData+i*img->widthStep))[j*img->nChannels+1]=112;//G((uchar*)(img->imageData+i*img->widthStep))[j*img->nChannels+2]=113;//R對多通道浮點圖像:IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);((float*) (img->imageData+i*img->widthStep))[j*img->nChannels+0]=111;//B((float*)(img->imageData+i*img->widthStep))[j*img->nChannels+1]=112;//G((float*)(img->imageData+i*img->widthStep))[j*img->nChannels+2]=113;//R用指針直接存取:(在某些情況下簡單高效 )對單通道字節(jié)圖像:IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);intheight =img->height;intwidth =img->width;intstep =img->widthStep/sizeof(uchar);uchar*data =(uchar*)img->imageData;data[i*step+j]=111;對多通道字節(jié)圖像:IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);intheight =img->height;intwidth =img->width;intstep =img->widthStep/sizeof(uchar);intchannels =img->nChannels;uchar*data =(uchar*)img->imageData;data[i*step+j*channels+k]=111;對單通道浮點圖像(假設(shè)用4字節(jié)調(diào)整):IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);intheight =img->height;intwidth =img->width;intstep =img->widthStep/sizeof(float);intchannels =img->nChannels;float*data =(float*)img->imageData;data[i*step+j*channels+k]=111;使用c++wrapper 進(jìn)行直接存取:(簡單高效)對單/多通道字節(jié)圖像,多通道浮點圖像定義一個 c++wrapper:template<classT>classImage{private:IplImage*imgp;public:Image(IplImage*img=0){imgp=img;}~Image(){imgp=0;}voidoperator=(IplImage*img){imgp=img;}inlineT*operator[](constintrowIndx){return((T*)(imgp->imageData+rowIndx*imgp->widthStep));}};typedefstruct{unsignedcharb,g,r;}RgbPixel;typedefstruct{floatb,g,r;}RgbPixelFloat;typedefImage<RgbPixel> RgbImage;typedefImage<RgbPixelFloat>RgbImageFloat;typedefImage<unsignedchar>BwImage;typedefImage<float> BwImageFloat;單通道字節(jié)圖像:BwImageimgA(img);imgA[i][j]=111;多通道字節(jié)圖像:RgbImageimgA(img);imgA[i][j].b=111;imgA[i][j].g=111;imgA[i][j].r=111;多通道浮點圖像:RgbImageFloatimgA(img);imgA[i][j].b=111;imgA[i][j].g=111;imgA[i][j].r=111;圖像轉(zhuǎn)換轉(zhuǎn)為灰度或彩色字節(jié)圖像 :cvConvertImage(src,dst,flags=0);src=float/bytegrayscale/colorimagedst=bytegrayscale/colorimageflags=CV_CVTIMG_FLIP (flipvertically)CV_CVTIMG_SWAP_RB(swaptheRandBchannels)轉(zhuǎn)換彩色圖像為灰度圖像 :使用OpenCV 轉(zhuǎn)換函數(shù):cvCvtColor(cimg,gimg,CV_BGR2GRAY);//cimg->gimg直接轉(zhuǎn)換:for(i=0;i<cimg->height;i++)for(j=0;j<cimg->width;j++)gimgA[i][j]=(uchar)(cimgA[i][j].b*0.114+cimgA[i][j].g*0.587+cimgA[i][j].r*0.299);顏色空間轉(zhuǎn)換:cvCvtColor(src,dst,code);//src->dstcode =CV_<X>2<Y><X>/<Y>=RGB,BGR,GRAY,HSV,YCrCb,XYZ,Lab,Luv,HLSe.g.:CV_BGR2GRAY,CV_BGR2HSV,CV_BGR2Lab繪圖命令畫長方體:// 用寬度為1(100,100)與(200,200)之間畫一長方體cvRectangle(img,cvPoint(100,100),cvPoint(200,200),cvScalar(255,0,0),1);畫圓:// 在(100,100)處畫一半徑為20的圓使用寬度為1的綠線cvCircle(img,cvPoint(100,100),20,cvScalar(0,255,0),1);畫線段:// 在(100,100)與(200,200)之間畫綠色線段,寬度為1cvLine(img,cvPoint(100,100),cvPoint(200,200),cvScalar(0,255,0),1);:CvPointcurve1[]={10,10,10,100,100,100,100,10};CvPointcurve2[]={30,30,30,130,130,130,130,30,150,10};CvPoint*curveArr[2]={curve1,curve2};int nCurvePts[2]={4,5};int nCurves=2;int int lineWidth=1;cvPolyLine(img,curveArr,nCurvePts,nCurves,isCurveClosed,cvScalar(0,255,255),lineWidth);畫內(nèi)填充色的多邊形:cvFillPoly(img,curveArr,nCurvePts,nCurves,cvScalar(0,255,255));添加文本:CvFontfont;doublehScale=1.0;doublevScale=1.0;int lineWidth=1;cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX|CV_FONT_ITALIC,hScale,vScale,0,lineWidth);cvPutText(img,"Mycomment",cvPoint(200,400),&font,cvScalar(255,255,0));Otherpossiblefonts:CV_FONT_HERSHEY_SIMPLEX,CV_FONT_HERSHEY_PLAIN,CV_FONT_HERSHEY_DUPLEX,CV_FONT_HERSHEY_COMPLEX,CV_FONT_HERSHEY_TRIPLEX,CV_FONT_HERSHEY_COMPLEX_SMALL,CV_FONT_HERSHEY_SCRIPT_COMPLEX,矩陣操作分配釋放矩陣空間綜述:OpenCV 有針對矩陣操作的 C語言函數(shù). 許多其他方法提供了更加方便的 C++接口,其效率與OpenCV 一樣.OpenCV 將向量作為1.矩陣按行存儲,每行有4.分配矩陣空間:CvMat*cvCreateMat(introws,intcols,inttype);type: 矩陣元素類型. 格式為CV_<bit_depth>(S|U|F)C<number_of_channels>.例如:CV_8UC18位無符號單通道矩陣,CV_32SC232位有符號雙.例程:CvMat*M=cvCreateMat(4,4,CV_32FC1);釋放矩陣空間:CvMat*M=cvCreateMat(4,4,CV_32FC1);cvReleaseMat(&M);復(fù)制矩陣:CvMat*M1=cvCreateMat(4,4,CV_32FC1);CvMat*M2;M2=cvCloneMat(M1);:doublea[]={1,2,3,4,5,6,7,8,9,10,11,12};CvMatMa=cvMat(3,4,CV_64FC1,a);:CvMatMa;cvInitMatHeader(&Ma,3,4,CV_64FC1,a);初始化矩陣為單位陣:CvMat*M=cvCreateMat(4,4,CV_32FC1);cvSetIdentity(M);// 存取矩陣元素假設(shè)需要存取一個 2維浮點矩陣的第(i,j)個元素.間接存取矩陣元素:cvmSet(M,i,j,2.0);//SetM(i,j)t=cvmGet(M,i,j);//GetM(i,j)直接存取,假設(shè)使用4-:CvMat*M =cvCreateMat(4,4,CV_32FC1);intn =M->cols;float*data=M->data.fl;data[i*n+j]=3.0;直接存取,校正字節(jié)任意 :CvMat*M =cvCreateMat(4,4,CV_32FC1);int step=M->step/sizeof(float);float*data=M->data.fl;(data+i*step)[j]=3.0;直接存取一個初始化的矩陣元素 :doublea[16];CvMatMa=cvMat(3,4,CV_64FC1,a);a[i*4+j]=2.0;//Ma(i,j)=2.0;向量操作矩陣矩陣操作:CvMat*Ma,*Mb,*Mc;cvAdd(Ma,Mb,Mc); //Ma+Mb ->MccvSub(Ma,Mb,Mc); //Ma-Mb ->MccvMatMul(Ma,Mb,Mc); //Ma*Mb ->Mc按元素的矩陣操作:CvMat*Ma,*Mb,*Mc;cvMul(Ma,Mb,Mc); //Ma.*Mb->MccvDiv(Ma,Mb,Mc); //Ma./Mb->MccvAddS(Ma,cvScalar(-10.0),Mc);//Ma.-10->Mc向量乘積:doubleva[]={1,2,3};doublevb[]={0,0,1};doublevc[3];CvMatVa=cvMat(3,1,CV_64FC1,va);CvMatVb=cvMat(3,1,CV_64FC1,vb);CvMatVc=cvMat(3,1,CV_64FC1,vc);doubleres=cvDotProduct(&Va,&Vb);// 點乘: Va.Vb->rescvCrossProduct(&Va,&Vb,&Vc); // 向量積:VaxVb->Vcend{verbatim}注意Va,Vb,Vc 在向量積中向量元素個數(shù)須相同 .:CvMat*Ma,*Mb;cvTranspose(Ma,Mb); // transpose(Ma) ->不能對自身進(jìn)行轉(zhuǎn)置CvScalart=cvTrace(Ma);//trace(Ma)->t.val[0]doubled=cvDet(Ma); //det(Ma)->dcvInvert(Ma,Mb); //inv(Ma)->Mb非齊次線性系統(tǒng)求解:CvMat*A=cvCreateMat(3,3,CV_32FC1);CvMat*x=cvCreateMat(3,1,CV_32FC1);CvMat*b=cvCreateMat(3,1,CV_32FC1);cvSolve(&A,&b,&x);//solve(Ax=b)forx特征值分析針對對稱矩陣):CvMat*A=cvCreateMat(3,3,CV_32FC1);CvMat*E=cvCreateMat(3,3,CV_32FC1);CvMat*l=cvCreateMat(3,1,CV_32FC1);cvEigenVV(&A,&E,&l);//lA 的特征值()//E= 對應(yīng)的特征向量(每行)奇異值分解SVD:CvMat*A=cvCreateMat(3,3,CV_32FC1);CvMat*U=cvCreateMat(3,3,CV_32FC1);CvMat*D=cvCreateMat(3,3,CV_32FC1);CvMat*V=cvCreateMat(3,3,CV_32FC1);cvSVD(A,D,U,V,CV_SVD_U_T|CV_SVD_V_T);//A=UDV^T標(biāo)號使得U和V返回時被轉(zhuǎn)置若沒有轉(zhuǎn)置標(biāo)號,則有問題不成功!!!).視頻序列操作從視頻序列中抓取一幀OpenCV 支持從攝像頭或視頻文件 (AVI)中抓取圖像.從攝像頭獲取初始化:CvCapture*capture=cvCaptureFromCAM(0);//capturefromvideodevice#0從視頻文件獲取初始化:CvCapture*capture=cvCaptureFromAVI("infile.avi");抓取幀:IplImage*img=0;if(!cvGrabFrame(capture)){ // 抓取一幀printf("Couldnotgrabaframe\n\7");exit(0);}img=cvRetrieveFrame(capture); // 恢復(fù)獲取的幀圖像要從多個攝像頭同時獲取圖像,首先從每個攝像頭抓取一幀.在抓取動作都結(jié)束后再恢復(fù)幀圖像 .:cvReleaseCapture(&capture);注意由設(shè)備抓取的圖像是由 capture 函數(shù)自動分配和釋放的. 不要試圖自己釋放它.設(shè)定幀信息獲取設(shè)備特性:cvQueryFrame(capture);//thiscallisnec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省隨州市部分高中2025-2026學(xué)年高一上學(xué)期期末聯(lián)考物理答案
- 貴州省貴陽市2025-2026學(xué)年上學(xué)期期末九年級物理試卷(含答案)
- 過程裝備密封技術(shù)
- 會東事業(yè)單位招聘2022年考試全真模擬試題4套及答案解析(附后)
- 鋼結(jié)構(gòu)成型技術(shù)操作要點
- 事業(yè)編考試判斷推理題及答案
- 社區(qū)護(hù)士考試題及答案
- 社保業(yè)務(wù)知識試題及答案
- 禽病防治試題庫及答案
- 甘肅省定西市岷縣2025-2026學(xué)年三年級上學(xué)期學(xué)情監(jiān)測數(shù)學(xué)試卷(含答案)
- 2024年風(fēng)電、光伏項目前期及建設(shè)手續(xù)辦理流程匯編
- 不良資產(chǎn)合作戰(zhàn)略框架協(xié)議文本
- 先進(jìn)班級介紹
- 2025年浙江省輔警考試真題及答案
- 2025中國熱帶農(nóng)業(yè)科學(xué)院科技信息研究所第一批招聘4人備考題庫(第1號)附答案
- 雨課堂學(xué)堂在線學(xué)堂云《婚姻家庭法(武漢科大 )》單元測試考核答案
- (高清版)DB11∕T 2440-2025 學(xué)校食堂病媒生物防制規(guī)范
- 學(xué)堂在線 雨課堂 學(xué)堂云 研究生學(xué)術(shù)與職業(yè)素養(yǎng)講座 章節(jié)測試答案
- 2025光纖供貨合同模板
- 2025年山東省濟(jì)南市歷下區(qū)中考一模英語試題(原卷版+解析版)
- 制造部年終總結(jié)
評論
0/150
提交評論