通过插座读取Python中的OpenCV图像
reading an opencv image in python through a socket
我正在尝试读取从C 发送的Python插座中的OpenCV映像。
我能够将图像读取到另一个C 程序或VB程序中并构建图像,但是使用Python,我不明白发生了什么。
我发送mat.data的发送代码:
char *start_s = "<S><size>43434234<cols>64<rows>64<SE>";//plus I send the image size, cols, rows, which varies, not like the static char string shown
char *end_e = "<E>";
cv::Mat image_send = some_mat;
iResult = send( ConnectSocket, start_s, (int)strlen(start_s), 0 );
iResult = send( ConnectSocket, (const char *) image_send.data, i_buffer_size, 0 );
iResult = send( ConnectSocket, end_e, (int)strlen(end_e), 0 );
这是我在Python上尝试过的,但还没有任何成功。image_cols和image_rows是从插座中过滤的,在此未显示,并且仅在C 垫中image_mat.data在我试图将其放入图像中的插座中。
data = conn.recv(4757560)
if(i_Read_Image == 2) & (image_cols != 0) & (image_rows != 0):
print ("Entering")
#print(data)
data2 = np.fromstring(data, dtype='uint8')
img_np = cv2.imdecode(data2,cv2.IMREAD_COLOR )
cv2.imshow('image',img_np)
cv2.waitKey(0)
#Also tried this
#img = Image.new('RGB', (image_cols, image_rows))
#img.putdata(data)
#img5 = np.reshape(data2,(image_rows,image_cols))
i_Read_Image = 0
在评论的帮助下,我能够得到一个工作的答案。原始图像在单个阵列RGB中,需要重塑并将其放入" RGB"图像中,可以在一行中完成:
img = Image.fromarray(data2.reshape(image_rows,image_cols,3), 'RGB')
以及从插座读取OpenCV数据阵列时:
data = conn.recv(567667)
if(i_Read_Image == 2) & (image_cols != 0) & (image_rows != 0):
data2 = np.fromstring(data, dtype='uint8')
img = Image.fromarray(data2.reshape(image_rows,image_cols,3), 'RGB')
img.show()
相关文章:
- C++中的openCV Mat访问冲突
- 本机库中的 OpenCV 创建错误
- 如何使用2通道垫子中的OPENCV中使用SVM
- 如何在 Unity Android 应用程序中的 OpenCV 中使用 ARCore 相机图像
- 调试一种方法,用于使用C 中的OpenCV从视频中查找帧的平均帧
- 使用颜色校正矩阵中的OpenCV颜色校正
- 通过插座读取Python中的OpenCV图像
- Android中的OpenCV 4.0.1链接失败
- 方法参数中的 OpenCV 垫"预期")""
- C++圆形区域中的 Opencv 对象检测
- Java 运行时环境检测到致命错误:Java 中的 OpenCV 椭圆检测
- 图像搜索(C )中的OPENCV图像
- Java中的OPENCV现有C 代码
- 代码中的 OpenCV 错误
- ubuntu 12.04 中的 openCV 程序编译错误"libopencv_core.so.2.4: cannot open shared object file: No such file or
- Linux/Ubuntu中的OpenCV安装
- 跟踪器示例中的OpenCV 3.0链接器错误
- eclipse中的OpenCV设置
- 多线程环境 (OpenMP) 中的 OpenCV 会导致分段错误
- Visual Studio 中的 OpenCV 构建错误