为什么python中的图像按位显示错误



我有python上的代码,我在其中打开一个图像并在其上设置掩码:

import cv2
import numpy as np

img1 = np.zeros((250, 500, 3), np.uint8)
img1 = cv2.rectangle(img1,(200, 0), (300, 100), (255, 255, 255), -1)
img2 = cv2.imread("blackie.jpg")

bitAnd = cv2.bitwise_and(img2, img1)
bitOr = cv2.bitwise_or(img2, img1)
bitXor = cv2.bitwise_xor(img1, img2)
bitNot1 = cv2.bitwise_not(img1)
bitNot2 = cv2.bitwise_not(img2)

cv2.imshow("img1", img1)
cv2.imshow("img2", img2)
cv2.imshow('bitAnd', bitAnd)
cv2.imshow('bitOr', bitOr)
cv2.imshow('bitXor', bitXor)
cv2.imshow('bitNot1', bitNot1)
cv2.imshow('bitNot2', bitNot2)

cv2.waitKey(0)
cv2.destroyAllWindows()

当我尝试按位图像时,这给了我错误:

error: OpenCV(4.5.2) C:UsersrunneradminAppDataLocalTemppip-req-build-ttbyx0jzopencvmodulescoresrcarithm.cpp:214: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and type), nor 'array op scalar', nor 'scalar op array' in function 'cv::binary_op'

@craclanddie是对的,您可以使用以下代码:

import cv2
import numpy as np
import sys
img2 = cv2.imread("blackie.jpg")
img1 = np.zeros(img2.shape, np.uint8)
if img2.shape[0] > 200 or img2.shape[1] > 300:
print("Bounding box is bigger then target image")
sys.exit(0)
img1 = cv2.rectangle(img1,(200, 0), (300, 100), (255, 255, 255), -1)
bitAnd = cv2.bitwise_and(img2, img1)
bitOr = cv2.bitwise_or(img2, img1)
bitXor = cv2.bitwise_xor(img1, img2)
bitNot1 = cv2.bitwise_not(img1)
bitNot2 = cv2.bitwise_not(img2)
cv2.imshow("img1", img1)
cv2.imshow("img2", img2)
cv2.imshow('bitAnd', bitAnd)
cv2.imshow('bitOr', bitOr)
cv2.imshow('bitXor', bitXor)
cv2.imshow('bitNot1', bitNot1)
cv2.imshow('bitNot2', bitNot2)
cv2.waitKey(0)
cv2.destroyAllWindows()

相关内容

最新更新