1.按位與 cv.bitwise_and()
dst = cv.bitwise_and(scr1 ,scr2 ,[,dst[,mask]])
scr1 輸入陣列1
scr2 輸入陣列2 dst:輸入陣列 與輸入陣列形狀和型別相同
mask 可選引數 8 位單通道陣列 用於指定要更改的元素位置
dst 目標影象
dst(i) = src1(i)^src2(i)
if mask(i) !=0
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [0,0,100]
img2 = np.zeros((1, 1, 3),np.uint8)
img2[:] = [0,255,200]
dst = cv.bitwise_and(img1, img2)
imagergb = cv.cvtcolor(dst,cv.color_bgr2rgb)
plt.imshow(imagergb)
plt.show()
print(img1)
print(img2)
print(dst)
#bin(100) 0b1100100
#bin(200) 0b11001000 按位與 得 0b1000000 —64
輸出結果:[[[ 0 0 100]]]
[[[ 0 255 200]]]
[[[ 0 0 64]]]
2.按位或 bitwise_or()
dst = cv.bitwise_or(src1,src2)
scr1 輸入陣列1
scr2 輸入陣列2 dst:輸入陣列 與輸入陣列形狀和型別相同
mask 可選引數 8 位單通道陣列 用於指定要更改的元素位置
dst(i) = src1(i) 或 src2(i)
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [100,0,250]
img2 = np.zeros((1, 1, 3),np.uint8)
img2[:] = [0,250,230]
dst = cv.bitwise_or(img1,img2)
print(img1)
print(img2)
print(dst)
imagergb = cv.cvtcolor(dst,cv.color_bgr2rgb)
plt.imshow(imagergb)
plt.show()
輸出結果:
[[[100 0 250]]]
[[[ 0 250 230]]]
[[[100 250 254]]]
3.按位非 bitwise_not()
dst = cv.bitwise_not(scr1 ,[,dst[,mask]])
scr 輸入陣列
scr2 輸入陣列2 dst:輸入陣列 與輸入陣列形狀和型別相同
mask 可選引數 8 位單通道陣列 用於指定要更改的元素位置
dst(i) = !src(i)
二進位制逐位取反 (二進位制+1 *(-1))
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [0,150,250]
dst = cv.bitwise_not(img1)
print(dst)
print(dst + img1)
imagergb = cv.cvtcolor(dst,cv.color_bgr2rgb)
plt.imshow(imagergb)
plt.show()
4.按位異或 dst = cv.bitwise_xor(src1,src2)
scr1 輸入陣列1
scr2 輸入陣列2 dst:輸入陣列 與輸入陣列形狀和型別相同
mask 可選引數 8 位單通道陣列 用於指定要更改的元素位置
dst 目標影象
dst(i) = src1(i) 異或 src2(i)
cv.namedwindow(『image』,cv.window_autosize) #建立視窗顯示,視窗名
cv.imshow(『image』, img1) #顯示影象
cv.waitkey(0) #0表示等待鍵盤輸入,按任意鍵繼續巡行程式
cv.destroyallwindows() #關閉視窗
print(img1)
print(img2)
print(dst)
imagergb = cv.cvtcolor(dst,cv.color_bgr2rgb)
plt.imshow(imagergb)
plt.show()
OpenCV 之按位運算舉例解析
掩碼操作 opencv 庫中包含很多運算函式,這裡著重介紹按位運算的基本原理並舉例說明。注 以上所有運算皆基於二進位制而來。a np.array 1 9 1 0 0 b np.array 1 8 0 0 0 c cv2.bitwise and a,b print c 1 8 0 0 0 這裡的 1 ...
位與 按位或 按位異或 運算
1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 00000001 1的二進位制補碼...
位運算( 按位與 按位或 異或)
參加運算的兩個數,按二進位制位進行 運算。運算規則 只有兩個數的二進位制同時為1,結果才為1,否則為0。負數按補碼形式參加按位與運算 即 0 0 0 0 1 0,1 0 0,1 1 1。比如10 11 即 0000 1010 0000 1011 0000 1010 所以 10 11 等於10 參加運...