通过 opencv 和 PyCapture2 导入我的 Point Grey Chameleon3 相机时遇到问题。目前单独拍摄照片/图像,但想要持续流动。我认为这与 camera.retrieveBuffer() 有关,但找不到解决方法。
import PyCapture2
import cv2
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
bus = PyCapture2.BusManager()
numCams = bus.getNumOfCameras()
camera = PyCapture2.Camera()
uid = bus.getCameraFromIndex(0)
camera.connect(uid)
camera.startCapture()
while True:
image = camera.retrieveBuffer()
row_bytes = float(len(image.getData())) / float(image.getRows());
cv_image = np.array(image.getData(), dtype="uint8").reshape((image.getRows(), image.getCols()) );
cv2.imshow('frame',cv_image)
cv2.waitKey(10)
如果有人有任何指向更多文档的指针或链接,将不胜感激谢谢
我在 BlackFly 相机上使用了非常相似的代码。流量问题是因为循环很慢。您调用了 image.getData()
两次,这使问题变得更糟,但主要问题是读取数据并将数据转换为图像格式的速度非常慢。
在我的计算机上更深入地研究和计时一些功能(我的图像是 1920 x 1200):
image = camera.retrieveBuffer()
- 所花费的时间与设置的帧率差不多。
image.getData()
大约需要 220 毫秒。
np.array(image.getData(), dtype="uint8").reshape((image.getRows(), image.getCols()) )
大约需要 540 毫秒。
所以刷新率不能比这快。
我是一名优秀的程序员,十分优秀!