【发布时间】:2021-09-10 19:20:03
【问题描述】:
我在从 c++ 函数读取像素信息时遇到问题,我可以读取所有其他参数,因此我确信我的连接正常。 我的python代码如下
real_img = cv2.imread("215107.jpg", 0)
n=real_image.ctypes.data_as(ctypes.POINTER(ctypes.c_uint8))
hllDll=WinDLL(name)
hllDll.transform(n,ctypes.c_int(myimage.shape[0]), ctypes.c_int(myimage.shape[1]), ctypes.c_int(angle))
我也试过
src1 = real_image.ctypes.data_as(ctypes.c_char_p)
hllDll.transform(src1,ctypes.c_int(myimage.shape[0]), ctypes.c_int(myimage.shape[1]), ctypes.c_int(angle))
和
src2=ctypes.c_void_p(real_img.ctypes.data)
hllDll.transform(src2,ctypes.c_int(myimage.shape[0]), ctypes.c_int(myimage.shape[1]), ctypes.c_int(angle))
但失败了 而我的c++函数如下:
unsigned int transform(int** a, int row,int col, int ang){
for (int i = 0; i < 4; i++) {
cout << a[i] << endl;
}
...}
当我尝试从 a 中读取时,它们都会给我同样巨大的数字,例如
1212121212121212
1212121212121212
1413131211111010
1012141311101113
如果我通过 python 访问,前 5 个数字应该是 18,但我很困惑是什么导致了这种情况
编辑: 我也试过 cout OSError: exception: access violation reading 0xFFFFFFFFFFFFFFFF返回了
【问题讨论】:
-
real_img、real_image和myimage有什么区别? -
啊,对不起,它们是一回事。我忘了在这里改变它们。但不影响代码。@Rotem
标签: python c++ opencv dll ctype