为什么带有 sublime text 3 和 python 3.8 的 OpenCV 意外退出?
Why is OpenCV with sublime text 3 and python 3.8 quitting unexpectedly?
我正在尝试使用 OpenCV 来捕获我的网络摄像头的视频。每次我 运行 程序 python 意外退出,代码显示 [Finishd in 0.3s with exit code -6]
操作系统 - Catalina 10.15.3
使用 sublime text 3
Python3.8
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
在您的代码中添加一些错误处理可能会有所帮助。例如,在
之后
cap = cv2.VideoCapture(0)
尝试这样写:
if !cap.isOpened():
print("Error")
exit(1)
然后,在
之后
ret, frame = cap.read()
尝试:
if !ret:
print("Error: frame not captured")
至少这应该给你一些关于问题出在哪里的提示。
祝你好运
安德烈亚斯
问题是 Sublime 的 build systems 无法像 cv2.imshow()
那样处理 GUI window 创建。我认为这与使用 subprocess
模块执行构建系统的方式有关。例如,如果您尝试使用 Pillow
或 matplotlib
显示图像,您会 运行 遇到同样的问题。请注意,您可以在 Sublime 中很好地执行图像 处理,只要您不尝试显示结果即可。
最简单的解决方法是保持终端 window 打开并在保存后从命令行手动 运行 您的脚本。
我正在尝试使用 OpenCV 来捕获我的网络摄像头的视频。每次我 运行 程序 python 意外退出,代码显示 [Finishd in 0.3s with exit code -6] 操作系统 - Catalina 10.15.3 使用 sublime text 3 Python3.8
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
在您的代码中添加一些错误处理可能会有所帮助。例如,在
之后cap = cv2.VideoCapture(0)
尝试这样写:
if !cap.isOpened():
print("Error")
exit(1)
然后,在
之后ret, frame = cap.read()
尝试:
if !ret:
print("Error: frame not captured")
至少这应该给你一些关于问题出在哪里的提示。
祝你好运
安德烈亚斯
问题是 Sublime 的 build systems 无法像 cv2.imshow()
那样处理 GUI window 创建。我认为这与使用 subprocess
模块执行构建系统的方式有关。例如,如果您尝试使用 Pillow
或 matplotlib
显示图像,您会 运行 遇到同样的问题。请注意,您可以在 Sublime 中很好地执行图像 处理,只要您不尝试显示结果即可。
最简单的解决方法是保持终端 window 打开并在保存后从命令行手动 运行 您的脚本。