laciel拉希尔 2022-06-08 14:47 采纳率: 100%
浏览 182
已结题

树莓派运行cv2调用摄像头拍照线程多次运行之后程序异常中止

写了一个使用opencv调用摄像头拍照的功能,但是循环运行一段时间之后出现这个报错。
图片如下:

img

猜测是因为摄像头调用的时候出现问题导致python程序在外部被强制中断,但不知道该如何解决

代码如下:

# 打开摄像头并拍照
def photograph(num):
    cap = cv2.VideoCapture(num, cv2.CAP_DSHOW)  # 打开摄像头
    while 1:
        ret, frame = cap.read()
        frame = cv2.flip(frame, 1)  # 将图像左右调换回来正常显示
        frame_name = 'cap' + str(num)
        # cv2.imshow(frame_name, frame)  # 生成摄像头窗口
        # add = os.path.dirname(os.path.abspath(__file__)) + '\\'
        # time_name = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
        pic_name = str(num) + '.jpg'
        print(pic_name)
        # 丢弃9帧调整摄像头
        for i in range(9):
            success, frame = cap.read()
            if not success:
                exit(1)
        cv2.imwrite(pic_name, frame)
        break
        # if time.sleep(2):  # 如果按下q 就截图保存并退出

        # cv2.imwrite(pic_name, frame)  # 保存路径
    cap.release()
    cv2.destroyAllWindows()


# 拍照线程
def th():
    threading.Thread(target=photograph, args=[0]).start()
    threading.Thread(target=photograph, args=[2]).start()
  • 写回答

3条回答 默认 最新

  • kof98765 2022-06-10 09:29
    关注

    从代码上看,你的线程只运行一次就会退出,然后你不断开启线程,可能导致了不可预料的结果,我建议是使用线程池,不要这么频繁地启动线程

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月15日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表