我尝试在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)
"