我想在 VS Code 中运行此 OpenCV 教程 中的以下 Python 代码:
import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():
print("Cannot open camera")
exit()
while True:
# Capture frame-by-frame
ret, frame = cap.read()
# if frame is read correctly ret is True
if not ret:
print("Can't receive frame (stream end?). Exiting ...")
break
# Our operations on the frame come here
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
# Display the resulting frame
cv.imshow('frame', gray)
if cv.waitKey(1) == ord('q'):
break
# When everything done, release the capture
cap.release()
cv.destroyAllWindows()
我还从 VS Code 的终端收到以下错误:
[ WARN:[email protected]] global /private/var/folders/sy/f16zz6x50xz3113nwtb9bvq00000gp/T/abs_506zufg7xt/croots/recipe/opencv-suite_1664548331847/work/modules/videoio/src/cap_gstreamer.cpp (862) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
我相信我的解释器/virtualenv 是正确的。我相机的小绿灯似乎确实亮了,虽然只是短暂的亮起。相机在其他情况下工作得很好。但是我运行的时候好像没有越过第一行代码
cap = cv.VideoCapture(0)
。对发生的事情有什么想法吗?
您似乎使用的是 Mac 操作系统。使用这个:
cap = cv.VideoCapture(0, apiPreference=cv.CAP_AVFOUNDATION)
Explicit
apiPreference
跳过后端的自动检测,因此甚至不会尝试 gstreamer 后端。
它说你的 OpenCV 需要 Gstreamer 作为后端来访问你的相机,但你还没有编译一个支持 Gstreamer 的 OpenCV。
我忘了返回这里报告我的解决方案。事实证明,VS Code 不能很好地适应基于 conda 的环境。我用 Python venv 创建了一个新环境;现在一切都像魅力一样。