国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

位運算bitwise_and函數(shù)

這篇具有很好參考價值的文章主要介紹了位運算bitwise_and函數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

今天在學(xué)習(xí)opencv時,把OpenCV 的標(biāo)志放到另一幅圖像上。這時要用到cv2.bitwise_and函數(shù),加下來從原理和效果講一下這個函數(shù)。

目標(biāo):將下面這個logo加到螞蟻圖像的左上角并且背景無遮擋(logo圖片白的部分不遮擋螞蟻圖片藍(lán)的地方)。

位運算bitwise_and函數(shù)

位運算bitwise_and函數(shù)

效果:

位運算bitwise_and函數(shù)

下面直接上代碼,根據(jù)代碼講解原理:

import cv2
img1 = cv2.imread(r'D:\Pycharm\learn_opencv\pic\ants_image\0013035.jpg')
img2 = cv2.imread('D:\Pycharm\learn_opencv\pic\logo.jfif')

rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols]

img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 200, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

img1_bg = cv2.bitwise_and(roi,roi,mask = mask)
img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv)
dst = cv2.add(img1_bg,img2_fg)
img1[0:rows, 0:cols ] = dst
cv2.imshow('sasa',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

?首先下面這兩行的代碼作用是將我們的螞蟻圖像中的對應(yīng)logo圖像的區(qū)域找出來記為roi

rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols]

我們將這個roi圖像顯示出來,與我們預(yù)想的一致,正是螞蟻圖像的左上角對應(yīng)logo圖像的區(qū)域:

位運算bitwise_and函數(shù)

?下面三行代碼是生成一個mask掩碼矩陣和mask_inv逆掩碼矩陣方便我們后面cv2.bitwise_and函數(shù)的使用,我們稍微講一下參數(shù)和原理,后面再看效果。

img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 200, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

第一行是將我們的logo圖像變成灰度圖像,第二行cv2.threshold函數(shù)的參數(shù):第一個參數(shù)為原圖像,第二個參數(shù)為進(jìn)行分類的閾值,第三個參數(shù)為高于(低于)閾值時賦予的新值,第四個方法選擇參數(shù),常用的有:
? cv2.THRESH_BINARY(黑白二值)
? cv2.THRESH_BINARY_INV(黑白二值反轉(zhuǎn))
? cv2.THRESH_TRUNC (得到的圖像為多像素值)
? cv2.THRESH_TOZERO
? cv2.THRESH_TOZERO_INV

返回值為:第一個retVal(得到的閾值值),第二個就是閾值化后的掩碼圖像

根據(jù)我們選擇的模式為cv2.THRESH_BINARY,以及第二三個參數(shù)為200、255,表示:高于200的像素設(shè)置為255,否則像素值置零。其他模式見文章:(13條消息) 圖像閾值處理cv2.threshold()函數(shù)(python)_肥宅_Sean的博客-CSDN博客_cv2threshold

于是我們的mask圖像便是對于img2gray圖像的高于200的像素值置255(白),否則置0(黑),我們來驗證一下:?

img2gray圖像:

位運算bitwise_and函數(shù)

mask掩碼矩陣圖像:

?位運算bitwise_and函數(shù)

可以看見img2gray中黑的和灰的像素值較低被置為黑色,背景白色仍置為白色。

得到mask掩碼矩陣圖像后我們接著往下看:

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

cv2.bitwise_and函數(shù)的作用取與運算,第一個參數(shù)為輸入圖像,第二個參數(shù)為輸出圖像,第三個參數(shù)mask:圖像掩膜,可選參數(shù),為8位單通道的灰度圖像,用于指定要更改的輸出圖像數(shù)組的元素,即輸出圖像像素只有mask對應(yīng)位置元素不為0的部分才輸出,否則該位置像素的所有通道分量都設(shè)置為0。

roi圖像和mask圖像上面已給出,下面我們給出img1_bg的圖像:

位運算bitwise_and函數(shù)

與聲明的一致,同理img2_fg圖像只是將參數(shù)mask換成了其反矩陣,并且作用對象變成了我們的logo圖像。我們看看效果:

img2_fn圖像:

位運算bitwise_and函數(shù)

?也即在原來mask矩陣圖像為白的時候輸出原圖logo圖像,反之置黑。

最后,我們將上面兩張圖加起來就達(dá)到了我們想要的左上角部分,再把原圖螞蟻圖像的左上角替換成我們加起來后的左上角部分即得到結(jié)果:文章來源地址http://www.zghlxwxcb.cn/news/detail-444949.html

dst = cv2.add(img1_bg,img2_fg)
img1[0:rows, 0:cols ] = dst

到了這里,關(guān)于位運算bitwise_and函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包