多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > OpenCV3.0 Examples學習筆記(7)-ffilldemo.cpp

OpenCV3.0 Examples學習筆記(7)-ffilldemo.cpp

來源:程序員人生   發布時間:2017-03-08 08:18:13 閱讀次數:7408次
這個系列的目的是通過對OpenCV示例,進1步了解OpenCV函數的使用,不觸及具體原理。

目錄
簡介
Example運行截圖
Example分析
Example代碼

簡介
本文記錄了對OpenCV示例ffilldemo.cpp的分析。
資料地址:http://docs.opencv.org/3.0.0/d5/d26/ffilldemo_8cpp-example.html

這個示例主要講述了如何使用floodFill函數,floodFill1般被譯為漫水填充。

floodFill算法原理

漫水填充法基于種子填充法對選中的圖象進行處理,對選中位置和與其聯通并“色彩相近”的點都填充為指定色彩。


1.floodFill有3種模式判斷是不是為相近色彩

(1)null range 必須完全相同

     src(seedPoint.x,seedPoint.y) == src(x,y)

(2)fixed range 滿足固定浮動范圍

    src(seedPoint.x,seedPoint.y)?loDiffsrc(x,y)src(seedPoint.x,seedPoint.y)+upDiff

(3)floating range 滿足漸變的浮動范圍

    src(x,y)?loDiffsrc(x,y)src(x,y)+upDiff    

以下為在相同位置,相同參數情況下,不同模式填充的情況
模式
填充效果演示
null range

fixed range

floating range


2.對灰度圖象和彩色圖象判斷是不是為相近色彩
(1)對灰度圖象,灰度值滿足條件
(2)對彩色圖象,需r,g,b3個通道都滿足條件

3.mask的使用
很多時候可以選擇先用邊沿檢測選取,以后再做填充,如此可以對指定的位置進行處理。

漫水填充法除用于色彩填充之外,更常見于將圖象進行標記,有很多時候用來做類似連通域分析的工作。


floodFill在OpenCV中的原型
floodFill

函數原型:
int floodFill( InputOutputArray image, InputOutputArray mask,
                            Point seedPoint, Scalar newVal, CV_OUT Rect* rect=0,
                            Scalar loDiff = Scalar(), Scalar upDiff = Scalar(),
                            int flags = 4 );

參數說明:
image:
  • InputOutputArray類型的image, 輸入/輸出1通道或3通道,8位或浮點圖象,具體參數由以后的參數具體指明。
mask:
  • InputOutputArray類型的mask,這是第2個版本的floodFill獨享的參數,表示操作掩模,。它應當為單通道、8位、長和寬上都比輸入圖象 image 大兩個像素點的圖象。第2個版本的floodFill需要使用和更新掩膜,所以這個mask參數我們1定要將其準備好并填在此處。需要注意的是,漫水填充不會填充掩膜mask的非零像素區域。例如,1個邊沿檢測算子的輸出可以用來作為掩膜,以避免填充到邊沿。一樣的,也能夠在屢次的函數調用中使用同1個掩膜,以保證填充的區域不會堆疊。另外需要注意的是,掩膜mask會比需填充的圖象大,所以 mask 中與輸入圖象(x,y)像素點相對應的點的坐標為(x+1,y+1)。
seedPoint:
  • Point類型的seedPoint,漫水填充算法的起始點。
newVal:
  • Scalar類型的newVal,像素點被染色的值,即在重繪區域像素的新值。
rect:
  • Rect*類型的rect,有默許值0,1個可選的參數,用于設置floodFill函數將要重繪區域的最小邊界矩形區域。
loDiff :
  • Scalar類型的loDiff,有默許值Scalar( ),表示當前視察像素值與其部件鄰域像素值或待加入該部件的種子像素之間的亮度或色彩之負差(lower brightness/color difference)的最大值。 
upDiff :
  • Scalar類型的upDiff,有默許值Scalar( ),表示當前視察像素值與其部件鄰域像素值或待加入該部件的種子像素之間的亮度或色彩之正差(lower brightness/color difference)的最大值。
flags :
  • int類型的flags,操作標志符,此參數包括3個部份,比較復雜,我們1起詳細看看。

  • 低8位(第0~7位)用于控制算法的連通性,可取4 (4為缺省值) 或 8。如果設為4,表示填充算法只斟酌當前像素水平方向和垂直方向的相鄰點;如果設為 8,除上述相鄰點外,還會包括對角線方向的相鄰點。
  • 高8位部份(16~23位)可以為0 或以下兩種選項標識符的組合:     

                                                                                    

  • FLOODFILL_FIXED_RANGE- 如果設置為這個標識符的話,就會斟酌當前像素與種子像素之間的差,否則就斟酌當前像素與其相鄰像素的差。也就是說,這個范圍是浮動的。
  • FLOODFILL_MASK_ONLY - 如果設置為這個標識符的話,函數不會去填充改變原始圖象 (也就是疏忽第3個參數newVal), 而是去填充掩模圖象(mask)。這個標識符只對第2個版本的floodFill有用,因第1個版本里面壓根就沒有mask參數。

  • 中間8位部份,上面關于高8位FLOODFILL_MASK_ONLY標識符中已說的很明顯,需要輸入符合要求的掩碼。Floodfill的flags參數的中間8位的值就是用于指定填充掩碼圖象的值的。但如果flags中間8位的值為0,則掩碼會用1來填充。

而所有flags可以用or操作符連接起來,即“|”。例如,如果想用8鄰域填充,并填充固定像素值范圍,填充掩碼而不是填充源圖象,和設填充值為38,那末輸入的參數是這樣:

flags=8 | FLOODFILL_MASK_ONLY | FLOODFILL_FIXED_RANGE | (38<<8)

floodFill

OpenCV還提供了1個不支持mask的版本,除沒有mask其他都完全相同。
函數原型:
int floodFill( InputOutputArray image,
                          Point seedPoint, Scalar newVal, CV_OUT Rect* rect = 0,
                          Scalar loDiff = Scalar(), Scalar upDiff = Scalar(),
                          int flags = 4 );


Example截圖
原圖
處理結果
參數

loDiff = 97
upDiff = 96
ffillMode = 1Fixed Range

Example分析
1.申明需要使用的變量
Mat image0, image, gray, mask;
int ffillMode = 1;
int loDiff = 20, upDiff = 20;
int connectivity = 4;
int isColor = true;
bool useMask = false;
int newMaskVal = 255;

注意:
(1)image0保存源圖象;
(2)image為處理后的圖象,用于顯示處理結果;
(3)gray為灰度圖象,由源圖象轉換;
(4)mask掩膜;
(5)ffillMode 

        a. ffillMode  = 0,null range 必須完全相同

        b. ffillMode  = 1,fixed range 滿足固定浮動范圍

        c. ffillMode  = 2,floating range 滿足漸變的浮動范圍

(6)loDiff 浮動閾值

(7)upDiff浮動閾值

(8)connectivity 聯通域方式

        a. connectivity  = 4,4聯通

        b. connectivity  = 8,8聯通

(9)isColor 是不是使用彩色模式

(10)useMask 是不是使用掩膜

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生

------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久国产精品免费一区二区三区 | 亚洲欧美色综合自拍 | 亚洲在线观看免费视频 | 天堂男人www| 亚洲国产欧美在线 | 免费一级毛片在线观看 | 地址一地址二地址三 | 免费播放成人生活片 | 武则天全黄肉体毛片免费看 | 精品国产第一国产综合精品 | 69视频在线观看 | 美国一级特黄aa大片 | 久久93精品国产91久久综合 | 欧美最猛性xxxxx69交 | 精品国产福利在线观看一区 | 欧美人欧美人与动人物性行为 | 农村妇女又色黄一级毛片 | 精品福利一区二区三区 | 视频在线观看视频 | jizz在线观看国产精品 | 欧美性猛交xxxx乱大交 | 国产高清在线播放免费观看 | 免费在线观看成年人视频 | 毛片久久| www在线观看视频 | 成人欧美精品一区二区不卡 | 理论片免费观看 | 国产免费一区不卡在线 | 亚洲精品国产专区一区 | 大黑人xxx| 亚洲综合免费视频 | 欧美 日韩 亚洲 中文字幕 一区 | 手机看片福利视频 | 麻豆影视免费观看 | 91亚洲精品成人一区 | 色婷婷成人 | 国产成人在线视频观看 | 亚洲国产欧美在线人成精品一区二区 | 成年视频国产免费观看 | 久久精品国产福利国产琪琪 | 最近中文字幕大全高清视频 |