python - 释放 VideoCapture(0) 并设置 kivy camera.play = True 后出现 Kivy-Python 错误
问题描述
import numpy as np
import cv2
import time
import datetime
import math
from scipy.spatial import distance as dist
import os
import image_processing as imp
import kivy
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.camera import Camera
class NoteCutterGrid(GridLayout):
__mode = 1
__auto_find = True
__show_settings = False
__sharpness = 30
__grayscale = 0
def take_photo(self):
self.ids['camera'].play = False
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cap.release()
if ret:
res = imp.image_processing(frame, (self.__mode - 1), self.__grayscale, self.__sharpness)
for image in res:
imp.save_image(image)
self.ids['camera'].play = True
如果我不写self.ids['camera'].play = True
,它会起作用image_processing
,但应用程序中的相机仍然被冻结。我想在保存从 VideoCapture 拍摄的图像后解冻它,但它多次返回错误:
[错误] [OpenCV] 无法从相机获取图像
回溯(最近一次通话最后):
文件“C:\Users\Tioma\AppData\Local\Programs\Python\Python36\lib\site-packages\kivy\core\camera\camera_opencv.py”,第 139 行,在 _update
self._buffer = frame.imageData
AttributeError:“NoneType”对象没有属性“imageData”
在处理上述异常的过程中,又出现了一个异常:
回溯(最近一次通话最后):
文件“C:\Users\Tioma\AppData\Local\Programs\Python\Python36\lib\site-packages\kivy\core\camera\camera_opencv.py”,第 143 行,在 _update
self._buffer = frame.tostring()
AttributeError:“NoneType”对象没有属性“tostring”
解决方案
推荐阅读
- python - 在 Python 中检索标签属性
- php - 在没有父容器的情况下使用 DOMDocument 前置 HTML 文本
- tensorflow - 如何将一个网络的输出连接到 Keras 中另一个网络的输入?
- python - 尝试从 Anbima API 检索数据
- react-native - 错误:model.execute(dict) 中提供的 dict['ToFloat'] 的形状必须为 [-1,-1,-1,3],但为 [200,150,3]
- python - 如何使用 Keras 循环创建预测模型?
- p5.js - p5.js 中的音高转换
- java - 浓咖啡。引起:junit.framework.AssertionFailedError: 'with error: is "..." does not match the selected view
- arrays - 如何在不指定 C 语言大小的情况下创建字符串数组?
- ios - UIButton 当前颜色检查