【发布时间】:2022-03-16 16:24:34
【问题描述】:
所以我使用 PiCam 来获取视频源,但我想我可以尝试将流传输到 C++ 进行处理。
Python 代码:
import time
import picamera
import picamera.array
import cv2
with picamera.PiCamera() as camera:
camera.start_preview()
time.sleep(2)
with picamera.array.PiRGBArray(camera) as stream:
camera.capture(stream, format='bgr')
# At this point the image is available as stream.array
image = stream.array
那么,在我的 .cpp 文件中做什么? 我一直在研究 boost::python,但他们的文档很烂..
发送 numpy 数组而不是直接在 Python 代码中转换为 Cv.Mat 然后从 C++ 调用它有什么好处? Like this.
有什么问题吗? 感谢所有帮助!
编辑:忘了说,试过this没有成功。 现在找到了pyopencv_to()和pyopencv_from(),但是不知道怎么用?抱歉,这个是新手。 (会链接上面的pyopencv_,但不允许发布两个以上的链接。)
【问题讨论】:
-
阅读,但不确定如何。我的 Python 代码没有给我一个 numpy 数组吗?需要 C++ 中的 cv::mat 来处理图像。
-
如果你能得到的只是一个 numpy 数组,我想说直接拉出它的底层数据缓冲区数组并转换它。可能需要检查某些 Numpy 标志,例如连续性、自己的数据等,但我猜相机库应该保证你不会得到其他东西拥有的“穿孔”数组......?
-
是的,但是可以使用上面链接的 cv.fromarray() 将 numpy 数组转换为 Cv.Mat。但不确定这是否是最好的方法?我的意思是,我不知道这是否是一个缓慢的过程..
-
我想知道它是否比从相机中获取数据要慢。但无论如何,我开始认为在 C/C++ 应用程序中嵌入相当于几行 Python 行的功能可能会过度杀伤它……为什么不直接在 C++ 应用程序中与相机对话呢?
标签: python c++ raspberry-pi2 opencv3.0