OpenCV python ROI與泛洪填充

2021-09-24 04:26:53 字數 3041 閱讀 1741

1,roi

感興趣區(region of interest,roi) 是影象的一部分,它通過在影象上選擇或使用諸如設定閾值(thresholding) 或者從其他檔案(如向量》 轉換獲得等方法生成。機器視覺、影象處理中,感趣區可以是從被處理的影象以方框、圓、橢圓、不規則多邊形等方式勾勒出需要處理的區域,通常用來作為影象分類的樣本、掩膜、裁剪區或及其他操作。

源**:

import cv2 as cv

import numpy as np

src = cv.imread("f:/images/lena.png")

cv.namedwindow("input image", cv.window_autosize)

cv.imshow("input image", src)

roi = src[50:250, 100:300] #假設我們對她的帽子感興趣,指定寬高的區域

gray = cv.cvtcolor(roi, cv.color_bgr2gray) #轉換成灰度圖

backroi = cv.cvtcolor(gray, cv.color_gray2bgr) #還原為rgb圖

src[50:250, 100:300] = backroi #重新置在原圖中(roi操作)

cv.imshow("hat", src)

cv.waitkey(0)

cv.destroyallwindows()

執行結果:

2,泛洪填充演算法(flood fill algorithm)

泛洪填充演算法又稱洪水填充演算法,是在很多圖形繪製軟體中常用的填充演算法,最熟悉不過就是windows paint的油漆桶功能。演算法的原理很簡單,就是從乙個點開始附近畫素點,填充成新的顏色,直到封閉區域內的所有畫素點都被填充新顏色為止。泛紅填充實現最常見有四鄰域畫素填充法,八鄰域畫素填充法,基於掃瞄線的畫素填充方法。根據實現又可以分為遞迴與非遞迴(基於棧)。所謂的floodfill 漫水填充就是在一張中,和種子點畫素相差在[-lodiff,+updiff]的時候就用newval來填充這個點。

def floodfill(image, mask, seedpoint, newval, lodiff=none, updiff=none, flags=none):

1.操作的影象,

2.掩碼,

3.起始畫素值,  #我們指定的第乙個點的三個通道值

4.填充的顏色,

5.填充顏色的低值, 引數3的三通道值 減去 引數5  #低值三通道

6.填充顏色的高值 , 引數3的三通道值 加上 引數6  #高值三通道

7.填充的方法 #彩色影象一般是floodfill_fixed_range 指定顏色填充;還有一種是floodfill_mask_only,mask的指定的位置為零時才填充,不為零不填充

源**:

import cv2 as cv

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) #+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, : ] = 255

cv.imshow("fill_binary", image)

mask = np.ones([402, 402, 1], np.uint8) #為1不填充,為0才進行填充,預設mask是單通道的,通道數1可寫可不寫

mask[101:301, 101:301] = 0 #加一的原因是mask[h+2,w+2],imge原來的roi區域對應的是mask[+1,+1]的區域

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()

執行結果:

彩色填充

二值填充

ARP泛洪與欺騙

位址解析協議,是根據ip位址獲取mac位址的乙個網路層協議。其工作原理如下 arp首先會發起乙個請求資料報,資料報的首部包含了目標主機的ip位址,然後這個資料報會在鏈路層進行再次包裝,生成乙太網資料報,最終由乙太網廣播給子網內的所有主機 每一台主機都會接收到這個資料報,並取出標頭里的ip位址,然後和...

python ROI與泛洪填充

roi roi region of interest 感興趣的區域,通官numpy進行操作,指定區域 import cv2 roi region of interest 感興趣的區域,通官numpy進行操作,指定區域 img1 cv2.imread clock.png 1 roiarea img1 ...

ARP欺騙與泛洪

常見的arp攻擊主要有兩種,一種是arp欺騙,攻擊者通過傳送偽造的arp報文,惡意修改閘道器或網路內其他主機的arp表項,造成使用者或網路的報文 異常。另一種是arp泛洪攻擊,也叫拒絕服務攻擊 denial of service 攻擊者向裝置傳送大量目的ip位址無法解析的偽造arp請求報文或免費報文...