佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 超詳細(xì)注釋之OpenCV按位AND OR XOR和NOT

超詳細(xì)注釋之OpenCV按位AND OR XOR和NOT

熱門(mén)標(biāo)簽:服務(wù)器配置 銀行業(yè)務(wù) 呼叫中心市場(chǎng)需求 美圖手機(jī) 智能手機(jī) 網(wǎng)站文章發(fā)布 檢查注冊(cè)表項(xiàng) 鐵路電話(huà)系統(tǒng)

這篇博客將介紹如何使用OpenCV應(yīng)用按位AND、OR、XOR和NOT。上一篇學(xué)習(xí)了如何從圖像中裁剪和提取感興趣的區(qū)域(ROI),截取的都是矩形。但是如果想裁剪一個(gè)非矩形區(qū)域呢?該怎么辦?

答案是同時(shí)應(yīng)用位運(yùn)算和掩蔽。

  • AND:當(dāng)且僅當(dāng)兩個(gè)像素都大于零時(shí),按位AND為真。
  • OR:如果兩個(gè)像素中的任何一個(gè)大于零,則按位或?yàn)檎妗?/li>
  • XOR:當(dāng)且僅當(dāng)兩個(gè)像素中的一個(gè)大于零,而不是兩個(gè)都大于零時(shí),按位異或?yàn)檎妗?/li>
  • NOT:按位NOT反轉(zhuǎn)圖像中的“開(kāi)”和“關(guān)”像素。

比較好記的是AND交集、OR并集、XOR并集-交集、NOT——非取反;

1. 效果圖

矩形 VS 圓形效果圖如下:

AND操作效果圖如下,可以看到正方形的邊緣丟失了,因?yàn)榫匦螞](méi)有圓形覆蓋那么大的區(qū)域,因此兩個(gè)像素都沒(méi)有“開(kāi)”。

OR操作效果圖如下,可以看到矩形和圓形被合并了。

XOR操作效果圖如下,可以看到正方形的中心被移走了,因?yàn)楫惢虿僮鞑荒芡瑫r(shí)具有大于零的像素。

NOT操作效果圖如下,可以看到圓由前景白色背景黑色變成了前景黑色背景白色。

2. 源碼

# 對(duì)示例圖像應(yīng)用AND、OR、XOR和NOT運(yùn)算符。
# USAGE
# python opencv_bitwise.py

# 導(dǎo)入必要的包
import numpy as np
import cv2

# 繪制一個(gè)矩形
rectangle = np.zeros((300, 300), dtype="uint8")
cv2.rectangle(rectangle, (25, 25), (275, 275), 255, -1)
cv2.imshow("Rectangle", rectangle)

# 繪制一個(gè)圓
circle = np.zeros((300, 300), dtype = "uint8")
cv2.circle(circle, (150, 150), 150, 255, -1)
cv2.imshow("Circle", circle)

# 'AND'操作——當(dāng)輸入都是>0的像素時(shí),則得到開(kāi)操作像素為255白色,否則被設(shè)置為關(guān)閉,像素為0黑色
# 當(dāng)且僅當(dāng)兩個(gè)像素都大于零時(shí),按位AND為真。
bitwiseAnd = cv2.bitwise_and(rectangle, circle)
cv2.imshow("AND", bitwiseAnd)
cv2.waitKey(0)

# ‘OR'操作得到矩形和圓形的并集,只要有一個(gè)>0,就得到255白色,否則為0
# 如果兩個(gè)像素中的任何一個(gè)大于零,則按位“或”為真。
bitwiseOr = cv2.bitwise_or(rectangle, circle)
cv2.imshow("OR", bitwiseOr)
cv2.waitKey(0)

# ‘XOR'是OR的補(bǔ)集,僅當(dāng)倆個(gè)像素有一個(gè)>0時(shí),為白色255
bitwiseXor = cv2.bitwise_xor(rectangle, circle)
cv2.imshow("XOR", bitwiseXor)
cv2.waitKey(0)

# ‘NOT'操作:0變成255,255變成0
bitwiseNot = cv2.bitwise_not(circle)
cv2.imshow("NOT", bitwiseNot)
cv2.waitKey(0)

參考 https://www.pyimagesearch.com/2021/01/19/opencv-bitwise-and-or-xor-and-not/

到此這篇關(guān)于超詳細(xì)注釋之OpenCV按位AND OR XOR和NOT的文章就介紹到這了,更多相關(guān)OpenCV按位AND OR XOR NOT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 超詳細(xì)注釋之OpenCV構(gòu)建透明的疊加層
  • 超詳細(xì)注釋之OpenCV Haar級(jí)聯(lián)檢測(cè)器進(jìn)行面部檢測(cè)
  • 超詳細(xì)注釋之OpenCV更改像素與修改圖像通道
  • 超詳細(xì)注釋之OpenCV dlib實(shí)現(xiàn)人臉采集

標(biāo)簽:樂(lè)山 紅河 上海 沈陽(yáng) 滄州 長(zhǎng)治 新疆 河南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《超詳細(xì)注釋之OpenCV按位AND OR XOR和NOT》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266
    龙游县| 江川县| 乌恰县| 鄂托克旗| 栖霞市| 化德县| 东乌珠穆沁旗| 建瓯市| 稷山县| 盐池县| 临安市| 紫金县| 泰州市| 那曲县| 漳平市| 濉溪县| 仁寿县| 阿拉善左旗| 凤庆县| 肃北| 车致| 永嘉县| 自治县| 平谷区| 沁水县| 宝应县| 克东县| 林芝县| 潼关县| 平原县| 潮安县| 政和县| 三穗县| 内乡县| 丰都县| 临江市| 绥德县| 娄烦县| 卢氏县| 佛坪县| 泰州市|