虽然我的板子是3588,跟3399Pro不是一样,但是我了解了以后应该是一样的代码。所以手工录入老师的代码videoCapture.py:
#coding:utf-8
import cv2
cap = cv2.VideoCapture(74)
index = 1
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow("src_image", frame) #原图
flip = cv2.flip(frame, 0) #翻转
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 灰度化
cv2.imshow("gra_image", gray)
threshold = cv2.threshold(gray, 140, 255, 0, gray) #二值化
# _, thresholdImage = cv2.threshold(gray, 25, 255, cv2.THRESH_BINARY)
cv2.imshow("threshold_image", thresholdImage)
k = cv2.waitKey(1) & 0xFF
if k == ord('s'):
cv2.imwrite("./" + str(index) + ".jpg", frame) # 保存图片
elif k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
【注】我录了,你们就可以抄我的了,大家记得给我点赞。
【出现问题】我把代码上传到开发板,运行后报错:
Traceback (most recent call last):
File "videoCapture.py", line 13, in <module>
cv2.imshow("threshold Image", thresholdImage)
TypeError: mat is not a numerical tuple
后面我把13行注释掉,程序是可以运行的。
【解决办法】mat is not a numerical tuple经这几个关键字查找后,在网上找到答案。
后面我按这个解决把threshold = cv2.threshold(gray, 140, 255, 0, gray) #二值化
修改为 _, thresholdImage = cv2.threshold(gray, 25, 255, cv2.THRESH_BINARY)
运行就没有报错了。
但是也没有出现书中所写的4幅图片。
【读后感】
这个问题,在2014年就有人发现了,并给予修正的方法,不知道是不是我的运行环境跟作者的不一样,还是作者在较对时没有发现这里的问题。