OpenCV Python 位运算

OpenCV Python 位运算

位运算用于图像处理和提取图像中的重要部分。

在OpenCV中实现了以下运算符−

  • bitwise_and(位与)
  • bitwise_or(位或)
  • bitwise_xor(位异或)
  • bitwise_not(位非)

示例1

为了演示这些运算符的使用,我们选择了两幅填充和空心圆的图像。

下面的程序演示了在OpenCV-Python中使用位运算符−

import cv2
import numpy as np

img1 = cv2.imread('a.png')
img2 = cv2.imread('b.png')

dest1 = cv2.bitwise_and(img2, img1, mask = None)
dest2 = cv2.bitwise_or(img2, img1, mask = None)
dest3 = cv2.bitwise_xor(img1, img2, mask = None)

cv2.imshow('A', img1)
cv2.imshow('B', img2)
cv2.imshow('AND', dest1)
cv2.imshow('OR', dest2)
cv2.imshow('XOR', dest3)
cv2.imshow('NOT A', cv2.bitwise_not(img1))
cv2.imshow('NOT B', cv2.bitwise_not(img2))

if cv2.waitKey(0) & 0xff == 27:
   cv2.destroyAllWindows()

输出

OpenCV Python 位运算

示例2

在另一个涉及位运算的示例中,OpenCV徽标被叠加在另一幅图像上。在这里,我们通过调用 threshold() 函数在徽标上获得一个掩码数组,并对它们进行AND操作。

类似地,通过NOT操作,我们获得了一个反向掩码。同时,我们将其与背景图像进行AND操作。

以下是确定位运算使用的程序:

import cv2 as cv
import numpy as np

img1 = cv.imread('lena.jpg')
img2 = cv.imread('whitelogo.png')
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols]
img2gray = cv.cvtColor(img2,cv.COLOR_BGR2GRAY)
ret, mask = cv.threshold(img2gray, 10, 255, cv.THRESH_BINARY)
mask_inv = cv.bitwise_not(mask)
# Now black-out the area of logo
img1_bg = cv.bitwise_and(roi,roi,mask = mask_inv)

# Take only region of logo from logo image.
img2_fg = cv.bitwise_and(img2,img2,mask = mask)
# Put logo in ROI
dst = cv.add(img2_fg, img1_bg)
img1[0:rows, 0:cols ] = dst
cv.imshow(Result,img1)
cv.waitKey(0)
cv.destroyAllWindows()

输出

掩码图像会给出以下结果 –

OpenCV Python 位运算

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程