瑞芯微Rockchip开发者社区
直播中

华仔stm32

4年用户 3157经验值
擅长:嵌入式技术
私信 关注
[经验]

《深度学习嵌入式应用开发:基于RK3399Pro和RK3588》第7章 进行郑积神经网络实战 ——BUG发现与修正

虽然我的板子是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经这几个关键字查找后,在网上找到答案。
image.png

后面我按这个解决把threshold = cv2.threshold(gray, 140, 255, 0, gray) #二值化

修改为 _, thresholdImage = cv2.threshold(gray, 25, 255, cv2.THRESH_BINARY)
运行就没有报错了。
61de37aba33231ff8882887ae931238.jpg
但是也没有出现书中所写的4幅图片。
【读后感】
这个问题,在2014年就有人发现了,并给予修正的方法,不知道是不是我的运行环境跟作者的不一样,还是作者在较对时没有发现这里的问题。

更多回帖

发帖
×
20
完善资料,
赚取积分