2015-09-25 31 views
1

我想提取輸入圖像的藍色。爲此,我使用命令任何人都可以幫我解釋在res = cv2.bitwise_and(img,img,mask = mask)中的參數意思

mask_img = cv2.inRange(hsv,lower_blue,upper_blue)創建藍色HSV顏色邊界和閾值HSV圖像。

之後,我通過使用

解析度= cv2.bitwise_and(IMG,IMG,掩模= mask_img)中使用的輸入圖像和閾值圖像上的bitwise_and。

其中'img'是輸入圖像。這段代碼是我從opencv獲得的。但我不明白爲什麼在bitwise_and中使用三個參數,而實際上每個參數是什麼意思?爲什麼在src1和src2使用相同的圖像?

此處還有什麼是mask關鍵字的用法?請幫我找出答案

+2

[我們是否應該認真對待這個問題?](http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#bitwise-and) –

回答

2

下面的鏈接清楚地說明了按位操作以及每個參數的意義。 http://opencvexamples.blogspot.com/2013/10/bitwise-and-or-xor-and-not.html

空隙bitwise_and(InputArray SRC1,SRC2 InputArray,OutputArray DST,InputArray掩模= noArray())

計算兩個陣列或陣列和標量的每個元件按位結合。參數 src1 - 第一個輸入數組或標量。

src2 - 第二個輸入數組或標量。

src - 單輸入數組。

值 - 標量值。

dst - 與輸入數組具有相同大小和類型的輸出數組。 mask - 可選操作掩碼,8位單通道陣列,用於指定要更改的輸出數組的元素

1

這背後的基本概念是黑色的價值,它的價值是在OPEN_CV.So黑色+欣彩= 0欣彩因爲黑色的值爲0

現在假設我們有兩個圖像,一個名爲img1,另一個是img2。 img2包含我們想放在img1上的標誌。我們創造threshold然後mask和IMG2的mask_inv,並創造IMG1的roi。 現在我們必須做兩件事來在img1上添加img2的標誌。 我們創造的投資回報率的背景img1_bg有幫助:mask_inv,mask_inv將有兩個區一黑一白,在白色區域,我們將投入IMG1的部分,留下黑色,因爲它是 -

img1_bg = cv2.bitwise_and(roi,roi,mask = mask_inv) 

在你問題你直接使用IMG的蒙版創建

res = cv2.bitwise_and(img,img,mask = mask_img) 

和IMG2我們需要創建標誌作爲投資回報的前景,

img2_fg = cv2.bitwise_and(img2,img2,mask = mask) 

這裏我們使用遮罩層,IMG2的標誌部分得到填補掩膜 現在的白色部分,當我們同時添加我們得到了一個完美的組合投資回報率 對於完整的描述和理解,請訪問: OPEN CV CODE FILES AND FULL DESCRIPTION

0

關於使用IMG兩次,我的猜測是,我們並不在乎img [i]和img [i]是什麼,因爲它僅僅是二進制的img [i]。重要的是,正如Mohammed Awney所提到的,當掩碼爲0時,我們使img [i]爲0,否則我們只保留像素。根據我們的面具,這是一種使圖像變黑的特定像素的方法。

相關問題