下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、opencv 中 cvarrcvmatiplimagecvmat 和 cvinputarray 的相關(guān)總結(jié)1.CvArr*:cpp view plain copy print?typedef void CvArr;以認(rèn)為 CvArr* 是一個(gè)萬(wàn)能指針,例如某個(gè)函數(shù)參數(shù)是可CvArr*,該函數(shù)內(nèi)部會(huì)強(qiáng)制轉(zhuǎn)換回該函數(shù)需要的數(shù)據(jù)類型,所以在調(diào)用該函數(shù)時(shí),傳入的參數(shù)類型就必須與該函數(shù)要求的類型一致,否則就會(huì)出錯(cuò)。2.cv:Mat:我們可以認(rèn)為cv:Mat 類型把向量、矩陣、圖像等都統(tǒng)一了操作。 cv:Mat 有更強(qiáng)大的矩陣運(yùn)算能力,支持常見的矩陣運(yùn)算。對(duì)于圖像數(shù)據(jù)的運(yùn)算,將IplImage 和 CvM
2、at類型轉(zhuǎn)換成 cv:Mat 類型可大大提高運(yùn)算效率 (后面會(huì)將 cv:Mat 與 IplImage 和 CvMat 類型之間的轉(zhuǎn)換 )。2.1 cv:Mat 的一些操作cpp view plain copy print?cv:Mat mat = imread(const string*filename);/讀取圖像imshow(const string Windows name,mat);/顯示圖像imwrite(const string&filename,mat);/將 mat 圖像保存到固定路徑中3.IplImage :現(xiàn)在 OpenCV 的很多處理圖像的函數(shù)中都使用IplIma
3、ge*這個(gè)數(shù)據(jù)類型,下面是它的一些重要的操作:cpp view plain copy print?IplImage* img =cvLoadImage(PathName);/從路徑中加載圖像到imgcvShowImage(WindowName, img);/顯示圖像 imgcvWaitKey();/按任意鍵退出窗口4.CvMat :因?yàn)?CvMat 是矩陣結(jié)構(gòu),無(wú)法像IplImage 和 Mat 一樣直接讀取圖像數(shù)據(jù),而是要先創(chuàng)建Mat 類的空矩陣(cvCreateMat() ;再利用宏CV_MAT_ELEM()存放數(shù)據(jù),或者提取數(shù)據(jù)。注意:這個(gè)宏只針對(duì)單通道有用,多通道就會(huì)報(bào)錯(cuò)。對(duì)于多通道的
4、CvMat矩陣來(lái)說,要用cvSetND() 對(duì)矩陣初始化,用cvGetND() 來(lái)提取數(shù)據(jù)。cpp view plain copy print?cvSetND(CvArr* arr, int idx0, intidy0, CvScalar value);cvSet2D(mat, 0, 0,CvScalar(2,3,0,0);/矩陣 mat 的 (0,0)點(diǎn)的像素值為一通道2,二通道3.5.IplImage轉(zhuǎn)cv:Mat類型、CvMat轉(zhuǎn)cv:Mat類型:在 VC+ 調(diào)用 OpenCV 處理圖像時(shí),經(jīng)常用到的一些 OpenCV函數(shù)的形參類型可能是cv:Mat 、也可能是IplImage 或者Cv
5、Mat ,那么在圖像數(shù)據(jù)傳遞的過程中就需要在IplImage 和CvMat 與 cv:Mat 之間進(jìn)行轉(zhuǎn)換。5.1.1IplImage 轉(zhuǎn) cv:Mat 類型 :cpp view plain copy print?Mat MatImage(IplImage* img); /直接利用 Mat 定義一個(gè) Mat 類矩陣,強(qiáng)制將括號(hào)內(nèi)的IplImage* 類型圖像轉(zhuǎn)換成Mat 類5.1.2CvMat 轉(zhuǎn) cv:Mat類型:cpp view plain copy print?Mat MatImage = Mat(CvMat* img, bool = true); / 當(dāng) bool=true 時(shí),會(huì)將
6、img 中的數(shù)據(jù)直接深拷貝到 MatImage 中,而 bool=false 時(shí)只創(chuàng)建與 img 相同的矩陣頭5.1.3cv:Mat 轉(zhuǎn) CvMat 類型:cpp view plain copy print?CvMat CvMatImage =CvMat(cv:Mat img);/直接將 cv:Mat 類型圖像矩陣轉(zhuǎn)換成 CvMat 類型5.1.4 cv:Mat 轉(zhuǎn) IplImage 類型:cpp view plain copy print?IplImage IPLimage = MatImage;5.2 IplImage 類型圖像拷貝到另一個(gè) IplImage 類型圖像中: cpp view
7、 plain copy print?IplImage* img1 = cvLoadImage(pathName, 2); /img1 指針指向路徑中的圖像,參數(shù) =2時(shí)加載原始的灰度圖IplImage* img2 =cvCloneImage(&img1);/將img1指針指向的圖像引用,并復(fù)制到IplImage* img2,img2也是指向該圖像的指針類型6.OpenCV 中的一些常用的函數(shù)及其參數(shù)類型的總結(jié):cpp view plain copy print?GaussianBlur(cv:InputArray src,cv:outputArray dst, cv:Size, 0,0
8、); / 高斯濾波通常導(dǎo)入的圖像為cv:Mat 類型,輸出的高斯濾波后的圖像也是 cv:Mat 類型圖像, cv:Size 通常用 Size(3,3)。cpp view plain copy print?HoughCircles(cv:InputArray image, cv:OutputArray circles, int method, double dp, double minDist, double param1, double param2,int minRadius, int maxRadius); cpp view plain copy print?/ 通常輸入圖像為cv:Mat
9、 類型,輸出的circles 定義為 vector<Vec3f>circles,用于存放找到的圓的圓心x, y坐標(biāo)和圓的半徑;cpp view plain copy print?/dp =1為最小分辨率,minDist=1為允許找到的圓的圓心之間相隔的最小距離,param1 和param2 根據(jù)具體圖像灰度來(lái)確定最優(yōu)值。 cpp view plain copy print?CvMat* img = cvCreateMatHeader(int rows, int cols,CV_8UC1);/CvMat* cvCreateMatHeader(); cpp view plain cop
10、y print?CvRectrect = cvRect(int x, int y, int width, int height); /定義矩形框的尺寸 cvGetSubRect(IplImage* img,CvMat* submat,CvRect rect); /將原始 IplImage* 類型圖像按照 rect 尺寸截出矩形框出來(lái),并傳給 CvMat* submat 輸出。cpp view plain copy print?GradValue_level.at<float>(0,i)= (float)CV_MAT_ELEM( *averageValue_level, float,
11、0, i+1 ) -(float)CV_MAT_ELEM( *averageValue_level, float,0, i ); cpp view plain copy print?/ 對(duì)于 CvMat* 類型矩陣通過CV_MAT_ELEM 宏提取像素值或修改像素值,對(duì)于 cv:Mat 類圖像矩陣通過 MatImage.at<type>(x,y) 進(jìn)行像素提取或修改像素值cpp view plain copy print?rectangle(cv:Mat &img, Rect(Point, Size(int width,int height),cv:Scalar &color,int thickness =1,int lineType = 8, int shift = 0); cpp view plain copy print?/ 在輸入圖像 cv:Mat img 上畫出矩形框 cpp view plain copy print?circle(cv:Mat &
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit3 It's Too Expensive(說課稿)-2024-2025學(xué)年北師大版(一起)英語(yǔ)四年級(jí)上冊(cè)001
- 2025【各行各業(yè)合同協(xié)議模板】【各行各業(yè)合同協(xié)議模板】商鋪轉(zhuǎn)讓協(xié)議
- 2025常用版工程工程合同樣式
- 2023八年級(jí)英語(yǔ)下冊(cè) Module 9 Friendship Unit 1 Could I ask if you've mentioned this to her第二課時(shí)說課稿 (新版)外研版
- 2025墻體廣告制作發(fā)布合同
- 2025國(guó)際貿(mào)易合同樣本參考
- Unit 3 My weekend plan Part A Let's talk Let's learn大單元整體說課稿表格式-2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)上冊(cè)
- 9 生活離不開規(guī)則說課稿-2023-2024學(xué)年道德與法治三年級(jí)下冊(cè)統(tǒng)編版
- 3 《百合花》 (說課稿)-2024-2025學(xué)年高一語(yǔ)文同步說課稿與知識(shí)梳理(統(tǒng)編版必修上冊(cè))
- Unit 4 My home PB Let's learn (說課稿)-2024-2025學(xué)年人教PEP版英語(yǔ)四年級(jí)上冊(cè)
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末質(zhì)量檢測(cè)歷史試題(含答案)
- 2025公司開工大吉蛇年起航萬(wàn)象啟新模板
- 企業(yè)人才招聘與選拔方法論研究
- GB/T 11263-2024熱軋H型鋼和剖分T型鋼
- 2024年江蘇省高考政治試卷(含答案逐題解析)
- 執(zhí)業(yè)醫(yī)師資格考試《臨床執(zhí)業(yè)醫(yī)師》 考前 押題試卷(一)絕密1
- 2024七年級(jí)數(shù)學(xué)上冊(cè)第六章幾何圖形初步綜合與實(shí)踐設(shè)計(jì)學(xué)校田徑運(yùn)動(dòng)會(huì)比賽場(chǎng)地課件新版新人教版
- 《三國(guó)演義》題庫(kù)單選題100道及答案解析
- 全國(guó)網(wǎng)約車出租車駕駛員公共題模擬考試題及答案
- 無(wú)人機(jī)實(shí)操技術(shù)課件:模擬器飛行
- 新人教版一年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)教案(表格式)
評(píng)論
0/150
提交評(píng)論