濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Opencv中cv2.floodFill算法的使用

Opencv中cv2.floodFill算法的使用

熱門標(biāo)簽:高德地圖標(biāo)注是免費(fèi)的嗎 百度地圖標(biāo)注位置怎么修改 地圖標(biāo)注視頻廣告 洪澤縣地圖標(biāo)注 梅州外呼業(yè)務(wù)系統(tǒng) 老人電話機(jī)器人 北京電信外呼系統(tǒng)靠譜嗎 大連crm外呼系統(tǒng) 無(wú)錫客服外呼系統(tǒng)一般多少錢

一、 泛洪算法——floodFill函數(shù)原型

cv2.floodFill(img,mask,seed,newvalue(BGR),(loDiff1,loDiff2,loDiff3),(upDiff1,upDiff2,upDiff3),flag)
  • img:為待使用泛洪算法的圖像
  • mask:為掩碼層,使用掩碼可以規(guī)定是在哪個(gè)區(qū)域使用該算法,如果是對(duì)于完整圖像都要使用,則掩碼層大小為原圖行數(shù)+2,列數(shù)+2.是一個(gè)二維的0矩陣,邊緣一圈會(huì)在使用算法是置為1。而只有對(duì)于掩碼層上對(duì)應(yīng)為0的位置才能泛洪,所以掩碼層初始化為0矩陣?!?strong>dtype:np.uint8】
  • seed:為泛洪算法的種子點(diǎn),也是根據(jù)該點(diǎn)的像素判斷決定和其相近顏色的像素點(diǎn),是否被泛洪處理。
    【類似于
  • newvalue:是對(duì)于泛洪區(qū)域新賦的值(B,G,R)
  • (loDiff1,loDiff2,loDiff3):是相對(duì)于seed種子點(diǎn)像素可以往下的像素值,即seed(B0,G0,R0),泛洪區(qū)域下界為(B0-loDiff1,G0-loDiff2,R0-loDiff3)
  • (upDiff1,upDiff2,upDiff3):是相對(duì)于seed種子點(diǎn)像素可以往上的像素值,即seed(B0,G0,R0),泛洪區(qū)域上界為(B0+upDiff1,G0+upDiff2,R0+upDiff3)
  • flag:為泛洪算法的處理模式。

  • 低八位 控制算法的連通性,是以seed點(diǎn)為中心,接著判斷周圍的幾個(gè)像素點(diǎn),再將泛洪區(qū)域像素點(diǎn)周圍的幾個(gè)像素點(diǎn)進(jìn)行考慮。 一般為4,8;默認(rèn)為4
  • 中間八位 與掩碼層賦值密切相關(guān),一般使用(2558)使中間8位全位1,則值為255,也就是掩碼層對(duì)應(yīng)原圖的泛洪區(qū)域的部分被由原來(lái)的初值0賦值成255,如果中間8位為0,則賦值為1.
  • 高八位 由opencv宏參數(shù)指定
    • cv2.FLOODFILL_FIXED_RANGE:改變圖像,填充newvalue
    • cv2.FLOODFILL_MASK_ONLY:不改變?cè)瓐D像,也就是newvalue參數(shù)失去作用,而是改變對(duì)應(yīng)區(qū)域的掩碼,設(shè)為中間八位的值

二、簡(jiǎn)單應(yīng)用

#泛洪填充(彩色圖像填充)
import cv2
import numpy as np
def fill_color_demo(image):
    copyImg = image.copy()
    h, w = image.shape[:2]
    mask = np.zeros([h+2, w+2],np.uint8)   #mask必須行和列都加2,且必須為uint8單通道陣列
    #為什么要加2可以這么理解:當(dāng)從0行0列開(kāi)始泛洪填充掃描時(shí),mask多出來(lái)的2可以保證掃描的邊界上的像素都會(huì)被處理
    cv.floodFill(copyImg, mask, (220, 250), (0, 255, 255), (100, 100, 100), (50, 50 ,50), cv.FLOODFILL_FIXED_RANGE)
    cv.imshow("fill_color_demo", copyImg)
 
src = cv.imread('E:/imageload/baboon.jpg')
cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)
cv.imshow('input_image', src)
fill_color_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

三、應(yīng)用,結(jié)合minareaRect

cv2.floodFill(initial_car,mask,(seed_x,seed_y),(255,0,0),(loDiff,loDiff,loDiff),(upDiff,upDiff,upDiff),flag)
 
points = []
row,column = mask.shape
 
for i in range(row):
    for j in range(column):
        if mask[i][j]==255:
           points.append((j,i))   #點(diǎn)應(yīng)該輸入點(diǎn)坐標(biāo)(列,行)
points = np.asarray(points)
new_rect = cv2.minAreaRect(points)

到此這篇關(guān)于Opencv中cv2.floodFill算法的使用的文章就介紹到這了,更多相關(guān)Opencv cv2.floodFill內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python OpenCV之圖片縮放的實(shí)現(xiàn)(cv2.resize)
  • 對(duì)python opencv 添加文字 cv2.putText 的各參數(shù)介紹
  • Opencv-Python圖像透視變換cv2.warpPerspective的示例
  • python-opencv 中值濾波{cv2.medianBlur(src, ksize)}的用法
  • Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的區(qū)別
  • Python-OpenCV中的cv2.inpaint()函數(shù)的使用

標(biāo)簽:清遠(yuǎn) 長(zhǎng)春 洛陽(yáng) 安慶 岳陽(yáng) 泉州 吉林 怒江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Opencv中cv2.floodFill算法的使用》,本文關(guān)鍵詞  Opencv,中,cv2.floodFill,算法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Opencv中cv2.floodFill算法的使用》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Opencv中cv2.floodFill算法的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    太白县| 梁山县| 西充县| 伊金霍洛旗| 隆德县| 拜城县| 湘阴县| 锡林浩特市| 无棣县| 宝丰县| 彩票| 鹤峰县| 开化县| 南木林县| 广汉市| 平泉县| 宣恩县| 五原县| 安康市| 阳泉市| 呼和浩特市| 千阳县| 陇川县| 宽城| 平塘县| 乐业县| 乐昌市| 桃源县| 吉林省| 维西| 汤阴县| 明水县| 禄劝| 老河口市| 宜兴市| 蓬溪县| 灵石县| 塘沽区| 揭东县| 乌鲁木齐市| 惠州市|