中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Opencv中cv2.floodFill算法的用法

發布時間:2021-06-21 10:58:58 來源:億速云 閱讀:882 作者:chen 欄目:開發技術

這篇文章主要講解了“Opencv中cv2.floodFill算法的用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Opencv中cv2.floodFill算法的用法”吧!

目錄
  • 一、 泛洪算法——floodFill函數原型

  • 二、簡單應用

  • 三、應用,結合minareaRect

一、 泛洪算法——floodFill函數原型

cv2.floodFill(img,mask,seed,newvalue(BGR),(loDiff1,loDiff2,loDiff3),(upDiff1,upDiff2,upDiff3),flag)
  • img:為待使用泛洪算法的圖像

  • mask:為掩碼層,使用掩碼可以規定是在哪個區域使用該算法,如果是對于完整圖像都要使用,則掩碼層大小為原圖行數+2,列數+2.是一個二維的0矩陣,邊緣一圈會在使用算法是置為1。而只有對于掩碼層上對應為0的位置才能泛洪,所以掩碼層初始化為0矩陣。【dtype:np.uint8

  • seed:為泛洪算法的種子點,也是根據該點的像素判斷決定和其相近顏色的像素點,是否被泛洪處理。
    【類似于Opencv中cv2.floodFill算法的用法

  • newvalue:是對于泛洪區域新賦的值(B,G,R)

  • (loDiff1,loDiff2,loDiff3):是相對于seed種子點像素可以往下的像素值,即seed(B0,G0,R0),泛洪區域下界為(B0-loDiff1,G0-loDiff2,R0-loDiff3)

  • (upDiff1,upDiff2,upDiff3):是相對于seed種子點像素可以往上的像素值,即seed(B0,G0,R0),泛洪區域上界為(B0+upDiff1,G0+upDiff2,R0+upDiff3)

  • flag:為泛洪算法的處理模式。

Opencv中cv2.floodFill算法的用法

  • 低八位 控制算法的連通性,是以seed點為中心,接著判斷周圍的幾個像素點,再將泛洪區域像素點周圍的幾個像素點進行考慮。 一般為4,8;默認為4

  • 中間八位 與掩碼層賦值密切相關,一般使用(255<<8)使中間8位全位1,則值為255,也就是掩碼層對應原圖的泛洪區域的部分被由原來的初值0賦值成255,如果中間8位為0,則賦值為1.

  • 高八位 由opencv宏參數指定

    • cv2.FLOODFILL_FIXED_RANGE:改變圖像,填充newvalue

    • cv2.FLOODFILL_MASK_ONLY:不改變原圖像,也就是newvalue參數失去作用,而是改變對應區域的掩碼,設為中間八位的值

Opencv中cv2.floodFill算法的用法

二、簡單應用

#泛洪填充(彩色圖像填充)
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可以這么理解:當從0行0列開始泛洪填充掃描時,mask多出來的2可以保證掃描的邊界上的像素都會被處理
    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()

Opencv中cv2.floodFill算法的用法

Opencv中cv2.floodFill算法的用法

三、應用,結合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))   #點應該輸入點坐標(列,行)
points = np.asarray(points)
new_rect = cv2.minAreaRect(points)

感謝各位的閱讀,以上就是“Opencv中cv2.floodFill算法的用法”的內容了,經過本文的學習后,相信大家對Opencv中cv2.floodFill算法的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大冶市| 洞口县| 个旧市| 娱乐| 婺源县| 渝中区| 湘西| 民乐县| 锦屏县| 祁阳县| 盐边县| 辉县市| 准格尔旗| 北川| 石柱| 吉安县| 芮城县| 化州市| 朝阳县| 赫章县| 桐庐县| 千阳县| 顺义区| 华容县| 北碚区| 吴忠市| 阿图什市| 富阳市| 政和县| 湖南省| 即墨市| 德格县| 会理县| 甘孜县| 琼结县| 千阳县| 凯里市| 漯河市| 灵丘县| 会东县| 邳州市|