opencv 按位運算

2021-10-03 04:26:52 字數 2952 閱讀 6405

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 參加運...