我正在尝试将内存中的图像传递给Yolo,而不是文件地址。在
在source code中,它使用openCV读取图像。由于openCV在c++中返回mat格式,因此它使用mat_to_image(mat im)
函数将mat格式转换为图像格式。
但是python中的opencv使用numpy.ndarray
,所以我不能使用mat_to_image()
。在
因此,我尝试按照作者的代码here将numpy数组放入图像格式:
class IMAGE(ctypes.Structure):
_fields_ = [("w", ctypes.c_int),
("h", ctypes.c_int),
("c", ctypes.c_int),
("data", ctypes.POINTER(ctypes.c_float))]
以下是我所拥有的:
^{pr2}$我还用这种方式改变了detect
函数:
但是当我运行它时,我得到一个错误:
ArgumentError: argument 2: <class 'TypeError'>: expected IMAGE instance instead of IMAGE
我想问题是我没有以正确的方式传递数据结构,但我不确定。在
我读了一些关于在Python和C++之间传递数据结构的其他答案,但我认为应该有一个更简单的解决方案。在
我是这样做的:
以下是如何将numpy数组转换为图像格式:
使用问题中提到的
detect
函数的修改版本。在结果是这样的:
^{pr2}$got the function from here
相关问题 更多 >
编程相关推荐