opencv 迭代器算法_第1頁(yè)
opencv 迭代器算法_第2頁(yè)
opencv 迭代器算法_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、采樣、差值和幾何變換InitLinelterator初始化線段迭代器int cvInitLineIterator( const CvArr* image, CvPoint ptl, CvPoint pt2, CvLinelterator* line_iterator, int connectivity=8 );image帶采線段的輸入圖像.ptl線段起始點(diǎn)pt2線段結(jié)束點(diǎn)line_iterator指向線段迭代器狀態(tài)結(jié)構(gòu)的指針connectivity被掃描線段的連通數(shù),4或8.left_to_right:標(biāo)志值,指出掃描直線是從pt1和pt2外面最左邊的點(diǎn)掃描到最右邊 的點(diǎn)(left_to_ri

2、ght乏0),還是按照指定的順序,從pt1到pt2(left_to_right=0)。函數(shù) cvInitLineIterator初始化線段迭代器,并返回兩點(diǎn)之間的象素點(diǎn)數(shù)目。兩個(gè)點(diǎn)必須在圖像內(nèi)。當(dāng)?shù)鞒跏蓟?,連接兩點(diǎn)的光柵線上所有點(diǎn),都可以連續(xù)通 過(guò)調(diào)用CV_NEXT_LINE_POINT來(lái)得到。線段上的點(diǎn)是使用4 一連通或8一連通 利用Bresenham算法逐點(diǎn)計(jì)算的。例子:使用線段迭代器計(jì)算彩色線上象素值的和CvScalar sum_line_pixels( IplImage* image, CvPoint pt1, CvPoint pt2 )CvLineIterator iterat

3、or;int blue_sum = 0, green_sum = 0, red_sum = 0;int count = cvInitLineIterator( image, pt1, pt2, &iterator, 8 );for( int i = 0; i imageData);y = offset/image-widthStep;x = (offset y*image-widthStep)/(3*sizeof(uchar) /* size of pixel */);printf(%d,%d)n, x, y );return cvScalar( blue_sum, green_sum, re

4、d_sum );取到像素值后,需返回此時(shí)的點(diǎn)的坐標(biāo)。像素值已通過(guò)iterator.prr取得offset每一個(gè)輪廓點(diǎn)的偏移量,當(dāng)輪廓是從圖像ROI中提取出來(lái)的時(shí)候,使用 偏移量有用,因?yàn)榭梢詮恼麄€(gè)圖像上下文來(lái)對(duì)輪廓做分析。cvSampleLine :對(duì)直線采樣;SampleLine將圖像上某一光柵線上的像素?cái)?shù)據(jù)讀入緩沖區(qū)int cvSampleLine( const CvArr* image, CvPoint ptl, CvPoint pt2, void* buffer, int connectivity=8 );image輸入圖像ptl光柵線段的起點(diǎn)pt2光柵線段的終點(diǎn)buffer存儲(chǔ)線段點(diǎn)

5、的緩存區(qū),必須有足夠大小來(lái)存儲(chǔ)點(diǎn)max( Ipt2.x-pt1.xl+1, Ipt2.y-pt1.yl+1 ) : 8一 連通情況下,或者 Ipt2.x-pt1.xl+lpt2.y-pt1.yl+1 : 4一連通 情況下.connectivity線段的連通方式,4 or 8.函數(shù)cvSampleLine實(shí)現(xiàn)了線段迭代器的一個(gè)特殊應(yīng)用。它讀取由pt1和pt2 兩點(diǎn)確定的線段上的所有圖像點(diǎn),包括終點(diǎn),并存儲(chǔ)到緩存中。IplImage* img-widthStep表示存儲(chǔ)一行像素所需的字節(jié)數(shù),widthStep必須是4 的倍數(shù)。對(duì)于,一個(gè)8u圖像每個(gè)像素正好一個(gè)字節(jié),如果width為3,那一行只需3

6、個(gè) 字節(jié),這樣的情況會(huì)自動(dòng)加一個(gè)字節(jié)補(bǔ)齊。這個(gè)圖像的一行仍然需要4個(gè)字節(jié), 只使用前3個(gè),最后一個(gè)空在那兒不用。例如:4*3的8u圖像的imageData數(shù)據(jù)大小為4*4=16字節(jié);如果是32F的圖像,一個(gè)像素要4個(gè)字節(jié),那么widthStep=width*4; 在OpenCV里邊,widthStep必須是4的倍數(shù),從而實(shí)現(xiàn)字節(jié)對(duì)齊,有利于提高 運(yùn)算速度。如果8U單通道圖像寬度為3,那么widthStep是4,加一個(gè)字節(jié)補(bǔ)齊。這個(gè)圖像 的一行需要4個(gè)字節(jié),只使用前3個(gè),最后一個(gè)空著。也就是一個(gè)寬3高3的圖 像的imageData數(shù)據(jù)大小為4*3=12字節(jié)。2.使用迭代器遍歷圖像cv:Mat同樣有標(biāo)準(zhǔn)模板庫(kù)(STL),可以使用迭代器訪問(wèn)數(shù)據(jù)。/ get iteratorscv:Mat_:iterator it= image.begin();cv:Mat_:iterator itend= image.end();for ( ; it!= itend; +it) 處理每個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論