我一直在尝试使用Python创建一个简单的程序,它使用OpenCV从我的网络摄像头获取视频,并将其显示在屏幕上.
我知道我部分在那里因为窗口已经创建并且我的网络摄像头上的灯光闪烁,但它似乎没有在窗口中显示任何内容.希望有人可以解释我做错了什么.
import cv
cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE)
capture = cv.CaptureFromCAM(0)
def repeat():
frame = cv.QueryFrame(capture)
cv.ShowImage("w1", frame)
while True:
repeat()
Run Code Online (Sandbox Code Playgroud)
在一个不相关的说明中,我注意到我的网络摄像头有时会更改其索引号cv.CaptureFromCAM,有时我需要输入0,1或2,即使我只连接了一台摄像机而且我没有拔掉它(我知道因为除非我改变指数,否则光不亮.有没有办法让Python确定正确的索引?
我已经以各种方式展示了如何使用Python中的网络摄像头拍摄图像(请参阅如何使用Python拍摄相机图像?).您可以看到使用Python拍摄的图像比使用JavaScript拍摄的图像暗得多.怎么了?
左边的图片是用http://martin-thoma.com/html5/webcam/拍摄的,右边的图片带有以下Python代码.两者都是在相同(受控)的闪电情况下拍摄的(外面是黑暗的,我只打开了一些电灯)和相同的网络摄像头.

import cv2
camera_port = 0
camera = cv2.VideoCapture(camera_port)
return_value, image = camera.read()
cv2.imwrite("opencv.png", image)
del(camera) # so that others can use the camera as soon as possible
Run Code Online (Sandbox Code Playgroud)
为什么使用Python图像拍摄的图像比使用JavaScript拍摄的图像暗得多,我该如何解决?
(获得相似的图像质量;只是使其更亮可能无法修复它.)
请注意"我该如何修复它":它不需要是opencv.如果你知道有可能用另一个包(或没有包)用Python获取网络摄像头图像也没关系.
我想从linux中的网络摄像头编写一个应用程序来捕获视频.有没有python库可以做到这一点?