亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

OpenCV 之按位運(yùn)算舉例解析

 更新時(shí)間:2020年06月19日 11:02:03   作者:cofisher  
這篇文章主要介紹了OpenCV之按位運(yùn)算舉例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

文章介紹

OpenCV 庫(kù)中包含很多運(yùn)算函數(shù),這里著重介紹按位運(yùn)算的基本原理并舉例說(shuō)明。

本篇文章中主要涉及到的函數(shù)有:

  • 按位與:bitwise_and();
  • 按位或:bitwise_or();
  • 按位異或:bitwise_xor()。
  • 按位反轉(zhuǎn):bitwise_not();

【注】以上所有運(yùn)算皆基于二進(jìn)制而來(lái)。

舉例說(shuō)明

1、bitwise_and()

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=0,0&0=0 還好理解,但是 8&9=8 是怎么回事嘞?

在介紹中我們說(shuō),按位運(yùn)算都是基于二進(jìn)制來(lái)的,我們可以使用 bin() 函數(shù)來(lái)將數(shù)字轉(zhuǎn)換為二進(jìn)制形式,如 9 的二進(jìn)制形式為 1001,8 的二進(jìn)制形式為 1000。

a = 9
b = 8
print(bin(a))
print(bin(b))
print(bin(a & b))
print(a & b)

0b1001
0b1000
0b1000
8

由此可見(jiàn),按位與操作分成三步:

1、將數(shù)字轉(zhuǎn)換成二進(jìn)制形式;
2、對(duì)同一位上的數(shù)字(0 或 1)進(jìn)行 & (and) 操作,即 1&1=1;1&0=0;0&0=0。
3、將 and 操作后的二進(jìn)制轉(zhuǎn)換回十進(jìn)制并輸出。

2、bitwise_or()

與按位與操作相似,按位或操作也分為三步:

1、將數(shù)字轉(zhuǎn)換成二進(jìn)制形式;
2、對(duì)同一位上的數(shù)字(0 或 1)進(jìn)行 | (or) 操作,即 1|1=1;1|0=1;0|0=0。
3、將 or 操作后的二進(jìn)制轉(zhuǎn)換回十進(jìn)制并輸出。

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]
 [9]
 [1]
 [0]
 [0]]

這里的 9 是因?yàn)椋?br />

a = 9
b = 8
print(bin(a))
print(bin(b))
print(bin(a | b))
print(a | b)

0b1001
0b1000
0b1001
9

3、bitwise_xor()

同樣地,按位異或操作也是分為三步:

1、將數(shù)字轉(zhuǎn)換成二進(jìn)制形式;
2、對(duì)同一位上的數(shù)字(0 或 1)進(jìn)行 ^ (xor) 操作,即 1^1=0;1^0=1;0^0=0。
3、將 xor 操作后的二進(jìn)制轉(zhuǎn)換回十進(jìn)制并輸出。

a = np.array([[1], [10], [1], [0], [0]])
b = np.array([[1], [8], [0], [0], [0]])
c = cv2.bitwise_xor(a, b)
print(c)

[[0]
 [2]
 [1]
 [0]
 [0]]

這里的 2 是因?yàn)椋?br />

a = 10
b = 8
print(bin(a))
print(bin(b))
print(bin(a^b))
print(a^b)

0b1010
0b1000
0b10
2

4、bitwise_not()

a = np.array([[9], [4], [1], [0], [0]])
b = cv2.bitwise_not(a)
print(b)
print(a+b)

[[-10]
 [ -5]
 [ -2]
 [ -1]
 [ -1]]
[[-1]
 [-1]
 [-1]
 [-1]
 [-1]]

由此可見(jiàn)按位反轉(zhuǎn)前后的數(shù)組相加為 -1。

掩碼操作

按位與操作和掩碼操作通常一起使用:

a = np.array([[1], [10], [1], [0], [5]])
mask = np.array([[0], [1], [0], [1], [0]], dtype='uint8')
c = cv2.bitwise_and(a, a)
c_mask = cv2.bitwise_and(a, a, mask=mask)
print(c)
print(c_mask)
 

[[ 1]
 [10]
 [ 1]
 [ 0]
 [ 5]]
[[ 0]
 [10]
 [ 0]
 [ 0]
 [ 0]]

經(jīng)過(guò)掩碼操作,mask 置零的位置在 a 中也會(huì)被置零,mask 置一的位置在 a 中保持不變。

到此這篇關(guān)于OpenCV 之按位運(yùn)算舉例解析的文章就介紹到這了,更多相關(guān)OpenCV 按位運(yùn)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論