日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OpenCV+python:ROI与泛洪填充

發(fā)布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV+python:ROI与泛洪填充 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1,ROI
感興趣區(qū)(Region of Interest,ROI) 是圖像的一部分,它通過在圖像上選擇或使用諸如設(shè)定閾值(thresholding) 或者從其他文件(如矢量> 轉(zhuǎn)換獲得等方法生成。機(jī)器視覺、圖像處理中,感趣區(qū)可以是從被處理的圖像以方框、圓、橢圓、不規(guī)則多邊形等方式勾勒出需要處理的區(qū)域,通常用來作為圖像分類的樣本、掩膜、裁剪區(qū)或及其他操作。
源代碼:

import cv2 as cv
import numpy as npsrc = cv.imread("F:/images/lena.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)ROI = src[50:250, 100:300]     #假設(shè)我們對她的帽子感興趣,指定寬高的區(qū)域
gray = cv.cvtColor(ROI, cv.COLOR_BGR2GRAY) #轉(zhuǎn)換成灰度圖
backROI = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)  #還原為RGB圖
src[50:250, 100:300] = backROI  #重新置在原圖中(ROI操作)
cv.imshow("hat", src)cv.waitKey(0)
cv.destroyAllWindows()

運(yùn)行結(jié)果:

2,泛洪填充算法(Flood Fill Algorithm)

泛洪填充算法又稱洪水填充算法,是在很多圖形繪制軟件中常用的填充算法,最熟悉不過就是windows paint的油漆桶功能。算法的原理很簡單,就是從一個點(diǎn)開始附近像素點(diǎn),填充成新的顏色,直到封閉區(qū)域內(nèi)的所有像素點(diǎn)都被填充新顏色為止。泛紅填充實(shí)現(xiàn)最常見有四鄰域像素填充法,八鄰域像素填充法,基于掃描線的像素填充方法。根據(jù)實(shí)現(xiàn)又可以分為遞歸與非遞歸(基于棧)。所謂的floodFill 漫水填充就是在一張圖片中,和種子點(diǎn)像素相差在[-loDiff,+upDiff]的時候就用newVal來填充這個點(diǎn)。

def floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None):1.操作的圖像, 
2.掩碼, 
3.起始像素值,  #我們指定的第一個點(diǎn)的三個通道值
4.填充的顏色, 
5.填充顏色的低值, 參數(shù)3的三通道值 減去 參數(shù)5  #低值三通道
6.填充顏色的高值 , 參數(shù)3的三通道值 加上 參數(shù)6  #高值三通道
7.填充的方法       #彩色圖像一般是FLOODFILL_FIXED_RANGE 指定顏色填充;還有一種是FLOODFILL_MASK_ONLY,mask的指定的位置為零時才填充,不為零不填充

源代碼:

import cv2 as cv
import numpy as npdef fill_color_demo(image):copyImg = image.copy() #拷貝原圖像h, w = image.shape[:2]  #返回高和寬mask = np.zeros([h+2, w+2], np.uint8)  #+2是為了使邊緣像素也被修改cv.floodFill(copyImg, mask, (30, 30), (0, 255, 255), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)cv.imshow("fill_color_demo", copyImg)def fill_binary():image = np.zeros([400, 400, 3], np.uint8)image[100:300, 100:300, : ] = 255cv.imshow("fill_binary", image)mask = np.ones([402, 402, 1], np.uint8) #為1不填充,為0才進(jìn)行填充,默認(rèn)mask是單通道的,通道數(shù)1可寫可不寫mask[101:301, 101:301] = 0 #加一的原因是mask[h+2,w+2],imge原來的ROI區(qū)域?qū)?yīng)的是mask[+1,+1]的區(qū)域cv.floodFill(image, mask, (200, 200), (100, 2, 255), cv.FLOODFILL_MASK_ONLY) # 最好寫到我們填充的圖像中間cv.imshow("filled binary", image)src = cv.imread("F:/images/lena.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
fill_color_demo(src)
fill_binary()cv.waitKey(0)
cv.destroyAllWindows()

運(yùn)行結(jié)果:
彩色填充

二值填充

總結(jié)

以上是生活随笔為你收集整理的OpenCV+python:ROI与泛洪填充的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。