【发布时间】:2017-09-29 16:57:45
【问题描述】:
如何使用 python 捕获图像?我说的是捕获图像,而不是保存特定的视频帧。 通常我们使用它来获取图片。但它给出的是框架,而不是图像
while(True):
ret, frame = cap.read()
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)
cv2.imshow('frame', rgb)
if cv2.waitKey(1) & 0xFF == ord('q'):
out = cv2.imwrite('capture.jpg', frame)
break
【问题讨论】:
-
这是什么意思?框架就是图像
-
当我们打开camera.camera有两个选项。要么拍摄图像,要么拍摄视频。当我们拍摄图像时,它比任何特定的视频帧都提供更好的结果。
-
OpenCV 没有这个功能。不幸的是,您需要为完整图像使用不同的库。请注意,这部分是由于 OpenCV 没有实现它,部分是由于相机功能。由于存在吞吐量限制,相机的视频图像尺寸较小;它可以以较小的图像尺寸以 30 FPS(或其他)捕获视频,或者以较大的图像尺寸捕获每秒 3 帧(或其他)的视频。因此,如果它正在录制视频,它只能拍摄视频帧大小的快照。如果您希望能够拍摄完整的图像,您将无法进行实时视频。
-
您的相机可能会让您设置帧大小;你可以试试例如
cap.set(cv2.CV_CAP_PROP_FRAME_WIDTH, frame_width)。您可以看到所有选项on the docs forVideoCapture.set()。有些相机允许您修改这些,这可能对您有用,有些可能不适用。
标签: python image opencv camera