![OpenCV 數(shù)據(jù)結(jié)構(gòu)和圖像處理_第1頁](http://file3.renrendoc.com/fileroot3/2021-11/7/9a752981-6ad3-4bf3-98f6-468ec6f09435/9a752981-6ad3-4bf3-98f6-468ec6f094351.gif)
![OpenCV 數(shù)據(jù)結(jié)構(gòu)和圖像處理_第2頁](http://file3.renrendoc.com/fileroot3/2021-11/7/9a752981-6ad3-4bf3-98f6-468ec6f09435/9a752981-6ad3-4bf3-98f6-468ec6f094352.gif)
![OpenCV 數(shù)據(jù)結(jié)構(gòu)和圖像處理_第3頁](http://file3.renrendoc.com/fileroot3/2021-11/7/9a752981-6ad3-4bf3-98f6-468ec6f09435/9a752981-6ad3-4bf3-98f6-468ec6f094353.gif)
![OpenCV 數(shù)據(jù)結(jié)構(gòu)和圖像處理_第4頁](http://file3.renrendoc.com/fileroot3/2021-11/7/9a752981-6ad3-4bf3-98f6-468ec6f09435/9a752981-6ad3-4bf3-98f6-468ec6f094354.gif)
![OpenCV 數(shù)據(jù)結(jié)構(gòu)和圖像處理_第5頁](http://file3.renrendoc.com/fileroot3/2021-11/7/9a752981-6ad3-4bf3-98f6-468ec6f09435/9a752981-6ad3-4bf3-98f6-468ec6f094355.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、OpenCV 數(shù)據(jù)類型和圖像處理周杉 OpenCVOpenCV基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)【基本數(shù)據(jù)類型】【基本數(shù)據(jù)類型】 點:點: CvPoint 、CvPoint2D32f、CvPoint3D32f 矩形框大?。壕匦慰虼笮。?CvSize 、CvSize2D32f 矩形框:矩形框: CvRect 可以存放可以存放1-41-4個數(shù)值的數(shù)組:個數(shù)值的數(shù)組: CvScalarCvScalar 矩陣:矩陣: CvMat 、CvMatND 、CvSparseMat IPLIPL圖像頭部:圖像頭部: IplImage 定義不確定的數(shù)組:定義不確定的數(shù)組: CvArr (僅作函數(shù)參數(shù))多
2、維稀疏矩陣多維稀疏矩陣OpenCVOpenCV基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)【點數(shù)據(jù)結(jié)構(gòu)】【點數(shù)據(jù)結(jié)構(gòu)】 CvPoint 二維坐標(biāo)系下的點,類型為整型 typedef struct CvPoint int x; /* X坐標(biāo), 通常以0為基點 */int y; /* y坐標(biāo), 通常以0為基點 */CvPoint;inline CvPoint cvPoint( int x, int y ); /* 構(gòu)造函數(shù) */inline CvPoint cvPointFrom32f( CvPoint2D32f point ) /* 從 CvPoint2D32f類型轉(zhuǎn)換得來 */ CvPoint
3、2D32f :二維坐標(biāo)下的點,類型為浮點 CvPoint3D32f :三維坐標(biāo)下的點,類型為浮點OpenCVOpenCV基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)【矩形數(shù)據(jù)結(jié)構(gòu)】【矩形數(shù)據(jù)結(jié)構(gòu)】 CvSize 矩形框大小,以像素為精度 typedef struct CvSizeint width; /* 矩形寬 */int height; /* 矩形高 */CvSize;inline CvSize cvSize( int width, int height ); /* 構(gòu)造函數(shù)*/ CvSize2D32f OpenCVOpenCV基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)【矩形數(shù)據(jù)結(jié)構(gòu)】【
4、矩形數(shù)據(jù)結(jié)構(gòu)】 CvRect 矩形框的偏移和大小 typedef struct CvRectint x; /* 方形的最左角的x-坐標(biāo) */int y; /* 方形的最上或者最下角的y-坐標(biāo) */int width; /* 寬 */int height; /* 高 */CvRect;inline CvRect cvRect(int x, int y, int width, int height); /* 構(gòu)造函數(shù)*/OpenCVOpenCV基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)基本數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)【矩陣矩陣數(shù)據(jù)結(jié)構(gòu)】數(shù)據(jù)結(jié)構(gòu)】 typedef struct CvMat int type; /* CvMat
5、標(biāo)識 (CV_MAT_MAGIC_VAL), 元素類型和標(biāo)記 */ int step;/* 以字節(jié)為單位的行數(shù)據(jù)長度*/ int* refcount; /* 內(nèi)部使用,數(shù)據(jù)引用計數(shù) */ union uchar* ptr;short* s; int* i; float* fl; double* db; data; /* data 指針 */ union int rows; int height; ; union int cols; int width; ; CvMat;int type; 矩陣通用矩陣數(shù)據(jù)類型: CV_(S|U|F)CS:帶符號整數(shù)U:無符號整數(shù)F:浮點數(shù)例:CV_8UC1:8
6、位無符號單通道矩陣; CV_32FC2:32位浮點數(shù)雙通道矩陣。int* refcount; /*數(shù)據(jù)引用計數(shù)*/ refcount=NULL: 矩陣的數(shù)據(jù)區(qū)為外部數(shù)據(jù),不需釋放 refcount!=NULL: 需要釋放矩陣頭和數(shù)據(jù)區(qū)。 int step; 以字節(jié)為單位的行數(shù)據(jù)長度,是定位元素所需要的行信息。 unionuchar *ptr;short *s;int *i;float *fl;double *db;data; 指向數(shù)據(jù)區(qū)首地址的指針。指針是公用體結(jié)構(gòu),使用時要根據(jù)矩陣的數(shù)據(jù)類型選擇。 矩陣矩陣由寬度(width),高度(height),類型(type),行數(shù)據(jù)長度(step,行
7、的長度用字節(jié)表示而不是用整形或者浮點型長度)和一個指向數(shù)據(jù)的指針構(gòu)成。 CvMatCvMat* * cvCreateMat(int rows,int cols,int type) cvCreateMat(int rows,int cols,int type) 該方法最簡單,既設(shè)置了矩陣的頭部,又為數(shù)據(jù)部分分配了內(nèi)存空間,該函數(shù)是cvCreateMatHeader()和cvCreateData()的合并縮寫。 cvCreateMatHeader()cvCreateMatHeader() 只創(chuàng)建CvMat頭部,但不為數(shù)據(jù)部分分配空間。 cvCreateData()cvCreateData() 則是
8、為矩陣的數(shù)據(jù)部分分配了內(nèi)存空間。有時候,我們只需要cvCreateMatHeader()就可以了,因為基于一些原因,我們可能已經(jīng)為數(shù)據(jù)部分分配了空間,或者此時分配空間還不是時候。 cvCloneMat(CvMatcvCloneMat(CvMat* *) ) 是從一個已經(jīng)有的矩陣,來“克隆”出一個新的 矩 陣 來 。 當(dāng) 我 們 不 再 需 要 某 矩 陣 時 , 我 們 需 要 調(diào) 用 長cvReleaseMat(CvMat*)來釋放它。矩陣的創(chuàng)建矩陣的創(chuàng)建typedef struct _IplImage int nSize; /* IplImage大小 */ int ID; /* 版本 (=
9、0)*/ int nChannels; /* 大多數(shù)OpenCV函數(shù)支持1,2,3 或4 個通道 */ int alphaChannel; /* 被OpenCV忽略 */ int depth; /* 像素的位深度:IPL_DEPTH_8U;IPL_DEPTH_8S; IPL_DEPTH_16U;IPL_DEPTH_16S;IPL_DEPTH_32S;IPL_DEPTH_32F and IPL_DEPTH_64F 可支持 */ char colorModel4; /* 被OpenCV忽略 */ char channelSeq4; /* 被OpenCV忽略 */ int dataOrder; /*
10、 0 - 交叉存取顏色通道, 1 - 分開的顏色通道.cvCreateImage只能創(chuàng)建交叉存取圖像 */ int origin;/* 0 - 頂左結(jié)構(gòu),1 - 底左結(jié)構(gòu) (BMP風(fēng)格) */ int align; /* 圖像行排列 (4 or 8). OpenCV 用widthStep 代替 */IplImage:IPL 圖像頭圖像頭 接上一張PPT內(nèi)容: int width; /* 圖像寬像素數(shù) */int height; /* 圖像高像素數(shù)*/struct _IplROI *roi;/* 圖像感興趣區(qū)域. 當(dāng)該值非空只對該區(qū)域進行處理 */struct _IplImage *maskRO
11、I; /* 在 OpenCV中必須置NULL */void *imageId; /* 同上*/ struct _IplTileInfo *tileInfo; /*同上*/ int imageSize; /* 圖像數(shù)據(jù)大小,單位字節(jié)*/ char *imageData; /* 指向第一行排列圖像數(shù)據(jù)的指針 */ int widthStep; /* 排列的圖像行大小,以字節(jié)為單位 */ int BorderMode4; /* 邊際結(jié)束模式, 被忽略*/ int BorderConst4; /* 邊際結(jié)束模式, 被忽略*/ char *imageDataOrigin; /* 指針指向一個不同的圖像數(shù)
12、據(jù)結(jié)構(gòu),是為了糾正圖像內(nèi)存分配準(zhǔn)備的 */ IplImage;圖像頭結(jié)構(gòu)圖像頭結(jié)構(gòu)int depth; 圖像通用數(shù)據(jù)類型: IPL_DEPTH_(S|U|F) S、U、F的意義同矩陣數(shù)據(jù)類型。 例:IPL_DEPTH_8U:8位無符號整數(shù)圖像 IPL_DEPTH_32F:32位浮點數(shù)圖像int nChannels;圖像的通道數(shù)例:灰度圖為1個通道復(fù)值圖像為2個通道RGB圖像為3個通道RGBA圖像為4個通道(A通道即阿爾法通道) 大多數(shù)OpenCV函數(shù)支持14個通道 int dataOrder; 圖像數(shù)據(jù)的存儲格式 0 :交叉存取顏色通道 1:分開存取顏色通道 OpenCV函數(shù)只支持交叉存取的圖
13、像。int widthStep; 排列的圖像行長度行長度,以字節(jié)為單位,與矩陣結(jié)構(gòu)中的step成員相似。struct _IplROI *roi; ROI:Region Of Interest(感興趣區(qū)域)roi=NULL:整幅圖像參與運算roi!=NULL:ROI區(qū)域代替圖像參加運算ROI的操作:cvSetImageROI():設(shè)置ROI區(qū)域cvResetImageROI():取消ROI區(qū)域cvGetImageROI():得到ROI區(qū)域int origin; 圖像像素的起始方式 origin=0:頂-左結(jié)構(gòu) origin=1:底-左結(jié)構(gòu)(windows風(fēng)格)char *imageData; 圖
14、像的數(shù)據(jù)區(qū) char *類型而非unsigned char *類型,進行浮 點處理時可能要加到unsigned char的轉(zhuǎn)換,否則會導(dǎo)致結(jié)果不正常。 CvArr:不確定數(shù)組 只用作函數(shù)的參數(shù) 表示可接受多種類型的輸入形式 (矩陣等) 運行時通過分析數(shù)組頭的前4個字節(jié)來判斷 大多數(shù)CvArr*做輸出參數(shù)的情況下,函數(shù)是對CvArr的結(jié)構(gòu)進行寫入操作而不是返回指針不確定數(shù)組不確定數(shù)組圖像處理圖像處理 平滑處理* 圖像形態(tài)學(xué)* 漫水填充算法 尺寸調(diào)整 圖像金字塔 閾值化一、平滑處理一、平滑處理 “平滑處理”也稱“模糊處理”,是一項簡單而且使用頻率很高的圖像處理方法。常用作處理圖像上的噪聲或者失真。
15、降低圖像分辨率時,平滑處理是很重要的。 目前,OpenCV可以提供五種不同的平滑處理操作方法,所有操作都有cvsmoothcvsmooth函數(shù)函數(shù)實現(xiàn),該函數(shù)可以將用戶所期望的平滑方式作為參數(shù)。 void cvSmooth( const CvArr* src, CvArr* dst, int smoothtype = CV_GAUSSIAN, int param1 = 3, int param2 = 0, double param3 = 0, double param4 = 0 );各種平滑處理實驗結(jié)果對比圖各種平滑處理實驗結(jié)果對比圖圖1:簡單模糊處理圖2:中值濾波模糊處理圖3:高斯模糊圖4:
16、雙邊濾波二、圖像形態(tài)學(xué)二、圖像形態(tài)學(xué) OpenCV為進行圖像的形態(tài)學(xué)變換提供了快速、方便的函數(shù)?;拘螒B(tài)轉(zhuǎn)換是膨脹與腐蝕,他們能實現(xiàn)多種功能:例如消除噪聲、分割出獨立的圖像元素以及在圖像中連接相鄰的元素。形態(tài)學(xué)也常被用于尋找圖像中的明顯的極大值區(qū)域或極小值區(qū)域以及求出圖像的梯度。腐蝕腐蝕: : 刪除對象邊界某些像素刪除對象邊界某些像素 腐蝕是膨脹的反操作。腐蝕操作要計算核區(qū)域像素的最小值最小值。 當(dāng)核B與圖像卷積時,計算被B覆蓋區(qū)域的最小像素值,并把這個值放到參考點上。形態(tài)腐蝕:在核B之下取最小像素值腐蝕腐蝕-設(shè)計思想設(shè)計思想結(jié)構(gòu)元素結(jié)構(gòu)元素原二值圖腐蝕后的圖 設(shè)計一個結(jié)構(gòu)元素,結(jié)構(gòu)元素的原點
17、定位在待處理的目標(biāo)像素目標(biāo)像素上,通過判斷是否覆蓋,來確定是否該點被腐蝕掉。 掃描原圖,找到第一個掃描原圖,找到第一個像素值為像素值為1的背景點。判斷該結(jié)構(gòu)元素所覆蓋的像的背景點。判斷該結(jié)構(gòu)元素所覆蓋的像素值素值是否是否全部全部為為1。如果是,則腐蝕后圖像中的相同位置上的像素值為1;如果不是,則腐蝕后圖像中的相同位置上的像素值為0。腐蝕腐蝕-應(yīng)用示例應(yīng)用示例1 1 腐蝕處理腐蝕處理可以將粘連在一起的不同目標(biāo)物分離,可以將粘連在一起的不同目標(biāo)物分離,并可以將小的顆粒噪聲去除。并可以將小的顆粒噪聲去除。(a)原圖(b)腐蝕1次(c)腐蝕2次圖像的腐蝕效果腐蝕腐蝕-應(yīng)用示例應(yīng)用示例2 2(a)原圖(
18、b)腐蝕2次膨脹膨脹: : 給圖像中的對象邊界添加像素給圖像中的對象邊界添加像素形態(tài)學(xué)膨脹:在核B下取最大像素值 膨脹膨脹是將與目標(biāo)區(qū)域的背景點合并到該目標(biāo)物中,使目標(biāo)物邊界向外部擴張的處理。 膨脹膨脹可以用來填補目標(biāo)區(qū)域中存在的某些空洞,以及清除包含在目標(biāo)區(qū)域中的小顆粒噪聲。膨脹膨脹-設(shè)計思想設(shè)計思想 設(shè)計一個結(jié)構(gòu)元素,結(jié)構(gòu)元素的原點定位在設(shè)計一個結(jié)構(gòu)元素,結(jié)構(gòu)元素的原點定位在背景像素背景像素上,判斷是否覆蓋有目標(biāo)點,來確定是上,判斷是否覆蓋有目標(biāo)點,來確定是否該點被膨脹為目標(biāo)點。否該點被膨脹為目標(biāo)點。 掃描原圖,找到第一個掃描原圖,找到第一個像素值為像素值為0 0的背景點。的背景點。判斷該結(jié)構(gòu)元素所覆蓋的像素值判斷該結(jié)構(gòu)元素所覆蓋的像素值是否是否存在存在為為1 1的目的目標(biāo)點標(biāo)點。結(jié)構(gòu)元素結(jié)構(gòu)元素膨脹膨脹-應(yīng)用示例應(yīng)用示例1 1 膨脹處理可以將斷裂開的目標(biāo)物進行合 并,便于對其整體的提取。膨脹膨脹-應(yīng)用示例應(yīng)用示例2 2(2)原圖(b)膨脹一次CvScalar CvScalar 如何賦值呢?如何賦值呢? 1. inline CvScalar cvScalarcvScalar( double val=0, double val1=0,double val2=
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年混凝土添加劑合作協(xié)議書
- 電商直播基地主播合作協(xié)議模板
- 2025年發(fā)動機基本件:飛輪合作協(xié)議書
- 2025年地震電磁輻射觀測儀合作協(xié)議書
- 2024-2025學(xué)年廣東省廣州市番禹區(qū)四年級(上)期末數(shù)學(xué)試卷
- 2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊全冊知識點梳理
- 2023--2024學(xué)年湖北省武漢市武昌區(qū)九年級上學(xué)期元調(diào)物理試題
- 2025年個人機械加工合同(4篇)
- 血液凈化中心護理應(yīng)急指引理論考核試題
- 2025年九年級班主任個人德育工作年度小結(jié)(三篇)
- 領(lǐng)導(dǎo)干部報告?zhèn)€人事項
- 9這點挫折算什么(課件)-五年級上冊生命與健康
- 價格監(jiān)督檢查知識培訓(xùn)課件
- 中國心理衛(wèi)生協(xié)會家庭教育指導(dǎo)師參考試題庫及答案
- 智能廣告投放技術(shù)方案
- 中國移動各省公司組織架構(gòu)
- 知識產(chǎn)權(quán)保護執(zhí)法
- 手術(shù)安全管理之手術(shù)部位標(biāo)識安全
- 2022年版煤礦安全規(guī)程
- 數(shù)字化時代的酒店員工培訓(xùn):技能升級
- 《學(xué)術(shù)規(guī)范和論文寫作》課件全套 第1-10章 知:認(rèn)識研究與論文寫作 - 引文規(guī)范
評論
0/150
提交評論