我几乎阅读了所有关于这个主题的问题,但我没有解决它。 我正在研究 Linux/Mint。我试图用 opencv 打开我的网络摄像头(或任何无关紧要的视频)并从视频中读取一帧。我写了这段代码:
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
print ret #It returns always false
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
--> 我读到这个问题可能是因为安装了 opencv。我检查了安装,似乎是真的。当我写“pip freeze”时,结果列表包含 opencv-python 模块,所以我认为安装是正确的,这不是我出现问题的原因。
--> 我试图将 videoCapture(0) 中的索引更改 为 -1 和 1,但再次失败。
--> 然后,我读到另一个原因可能是 FFmpeg 或 codec。但是我也安装了FFmpeg,问题没有改变。
--> cv2.VideoCapture() 没有给出任何错误,但我想在 Poject>Settings>Project Interpreter 上安装 cv2 模块,它给了我一个错误(执行命令:pip install cv2) 但是当我运行这个命令时,它给了我这个错误:找不到满足 cv2 要求的版本(来自版本:)找不到 cv2 的匹配分布 我检查了我的 virtualenv 中的 cv2 模块,它似乎在那里。 (/cv_env/lib/python2.7/site-packages/cv2)
--> 我也用 "skvideo.io.VideoCapture()" 尝试过,但我又失败了。
所以,我不明白这个问题,我真的是这个主题的新手。 有什么问题?
最佳答案
sudo modprobe bcm2835-v4l2
将为 opencv 自动“启用”你的 pi 相机。
关于python - cv2.videoCapture() 总是返回 false,也是 skvideo.io.VideoCapture(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47314694/