gpt4 book ai didi

python-3.x - Bitwise_and 函数返回错误断言失败且掩码相同

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:47 31 4
gpt4 key购买 nike

我正在尝试编写一个脚本来剪掉你的脸并使所有暗像素变成全黑。我首先使用 haarcascade 来识别人脸。然后我根据 haarcascade 的坐标创建一个 roi(感兴趣区域)。之后,我使用范围内过滤器选择暗像素并从中创建一个蒙版。最后,但并非最不重要的一点是,我将此滤镜应用于裁剪后的图像以粘贴到我的脸上。

问题是当我使用 bitwise_and 函数时它返回一个错误。我无法理解这个错误,但是当我搜索时,我发现有人有类似的问题。对我来说,问题是答案通常是不可理解的,或者只是重新格式化代码。因此,我想知道你们这些互联网人能否以一种让 future 的读者可以理解的方式回答(并帮助我更正代码 XD)。

这是我的代码:

    import numpy as np
import cv2


face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while(True):

#get's the cameras video
_ , img = cap.read()
#Converts to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face = face_cascade.detectMultiScale(gray,1.3,5,1)
if len(face) > 0:
for (x,y,w,h) in face:
roi = img[y:y+h, x:x+w]
white = (255)
grey = (75)
#Finds dark pixel
mask = cv2.inRange(gray,grey,white)
res = cv2.bitwise_and(roi,roi,mask=mask)
cv2.imshow('img',res)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

这是错误:

    Traceback (most recent call last):
File "C:\Users\molta\Documents\Pythons\Hologram2.py", line 23, in <module>
res = cv2.bitwise_and(roi,roi,mask=mask)
cv2.error: OpenCV(4.1.0) C:\projects\opencv-
python\opencv\modules\core\src\arithm.cpp:245: error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) &&
_mask.sameSize(*psrc1) in function 'cv::binary_op'

最佳答案

您遇到以上错误是因为掩码的大小大于您的案例中的感兴趣区域。您正在使用 roi,它是原始图像(裁剪后的脸)的裁剪版本,而 mask 的大小等于原始图像的灰度版本。它们应该大小相同。我认为它应该像下面这样:

if len(face) > 0:
for (x,y,w,h) in face:
roi = img[y:y+h, x:x+w]
img_gray = gray[y:y+h, x:x+w]

white = (255)
grey = (75)

# Finds dark pixel
mask = cv2.inRange(img_gray,grey,white)
res = cv2.bitwise_and(roi,roi,mask=mask)

关于python-3.x - Bitwise_and 函数返回错误断言失败且掩码相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57342812/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com