OpenCV;读取相机在macOS;TypeError



我尝试在macOS中运行相机读取代码。下面是我的代码:

import cv2
from pyzbar.pyzbar import decode
import os
os.system("clear")
cap = cv2.VideoCapture(0)
cap.set(3 , 640) 
cap.set(4 , 480) 
while True:
success, img = cap.read()
for barcode in decode(img):

print(barcode.data)

print(barcode.rect)

x = barcode.data.decode('utf-8')
print(x)
cv2.imshow('Result', img)
cv2.waitKey(1)

当前错误:

Traceback (most recent call last):
File "/Users/username/Documents/Pyzbar Lesson 2.py", line 21, in <module>
for barcode in decode(img):
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyzbar/pyzbar.py", line 207, in decode
pixels, width, height = _pixel_data(image)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyzbar/pyzbar.py", line 173, in _pixel_data
pixels, width, height = image
TypeError: cannot unpack non-iterable NoneType object

如果我在代码中遗漏了任何东西或其他错误,请分享。

谢谢。

这段代码工作正常在我的Windows机器上(在改变"清晰"的cls)。

你得到一个Type Error,因为解码试图操作一个None类型。第21行调用for barcode in decode(img)。这里是‘没有’,因为img解码不能处理没有得到错误。

我怀疑你的硬件不能正常工作。这可能是由于您的相机访问偏好。您可以使用cap.isOpen()cap.isValid()检查来添加额外的故障排除层。

我终于找到了答案显然,对于一些macOS用户来说,在代码中使用'cap.set()'会给你带来错误。但在删除它之后,它可以完美地工作

"

import cv2
from pyzbar.pyzbar import decode
import os
os.system("clear")
cap = cv2.VideoCapture(0)
while True:
success, img = cap.read()
if not success:
break
for barcode in decode(img):
print(barcode.data)
print(barcode.rect)
x = barcode.data.decode('utf-8')
print(x)
cv2.imshow('Result', img)
cv2.waitKey(1)

"

最新更新