Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 显示通过套接字发送的numpy阵列的图像_Python_Arrays_Numpy_Sockets_Cv2 - Fatal编程技术网

Python 显示通过套接字发送的numpy阵列的图像

Python 显示通过套接字发送的numpy阵列的图像,python,arrays,numpy,sockets,cv2,Python,Arrays,Numpy,Sockets,Cv2,我正在尝试制作一个流媒体应用程序,它可以拍摄特定窗口的屏幕截图,并将其发送到服务器,然后服务器显示IMG 通过(WORKS)完成捕获 帧发送:(工作) 显示:(不工作) 我尝试显示的选项: ------- image = cv2.imdecode(arr, cv2.COLOR_BGR2RGB) cv2.imshow('URL2Image',image) ------- cv2.imshow('window', arr) ------- img = Image.fromarray(arr, &qu

我正在尝试制作一个流媒体应用程序,它可以拍摄特定窗口的屏幕截图,并将其发送到服务器,然后服务器显示IMG

通过(WORKS)完成捕获

帧发送:(工作

显示:(不工作

我尝试显示的选项:

-------
image = cv2.imdecode(arr, cv2.COLOR_BGR2RGB)
cv2.imshow('URL2Image',image)
-------
cv2.imshow('window', arr)
-------
img = Image.fromarray(arr, "RGB")
img.show()
-------
我通过发送样本numpy数组数据测试了标记为工作的部件

---编辑---

原来
cv2.imshow()
需要在下面的某个地方调用
cv2.waitKey()
才能正常工作。 感谢所有试图帮助您的人。

您的阵列形状是什么? 确保不仅将其转换为一维阵列,还将其转换为二维或三维阵列(取决于它是灰度还是彩色)

您必须以某种方式指定预期数组的x和y(可能还有z)维度——要么在消息中,要么在接收端硬编码到代码中

当然,将这些作为参数发送到消息中更好,但对于调试,我建议从硬编码尺寸开始,将其转换为正确的2d/3d形状。如果可行,那就是问题所在。然后找出如何将其与图像本身一起作为消息发送。

您的阵列形状是什么? 确保不仅将其转换为一维阵列,还将其转换为二维或三维阵列(取决于它是灰度还是彩色)

您必须以某种方式指定预期数组的x和y(可能还有z)维度——要么在消息中,要么在接收端硬编码到代码中


当然,将这些作为参数发送到消息中更好,但对于调试,我建议从硬编码尺寸开始,将其转换为正确的2d/3d形状。如果可行,那就是问题所在。然后找出如何将其与图像本身一起作为消息发送。

打印输出(arr.shape)是:(628882,3),因此形状不是问题。另外,我没有从cv2.imshow函数中得到任何错误。只是弹出的窗口在Resposine中,必须关闭(数据同时流动)。如果数据同时流动,这意味着可能会在许多图像实例上调用show(),这可能会导致挂起?在调用show()之前,您是否尝试将图像保存到文件?如果图像成功保存到文件并看起来正常,则表示要朝该方向查看。甚至可能在代码的那个点上放置一个等待语句大约10秒。print(arr.shape)的输出是:(628882,3),所以形状不是问题。另外,我没有从cv2.imshow函数中得到任何错误。只是弹出的窗口在Resposine中,必须关闭(数据同时流动)。如果数据同时流动,这意味着可能会在许多图像实例上调用show(),这可能会导致挂起?在调用show()之前,您是否尝试将图像保存到文件?如果图像成功保存到文件并看起来正常,则表示要朝该方向查看。甚至可能在代码的这一点上放置一个等待语句约10秒。请尝试制作一个“最小完整可复制示例”,此时可能有太多我们看不到的东西可能导致问题。您应该拥有所有的
import
语句和实际的、最小的、可运行的代码。谢谢。请尝试制作一个“最小完整可复制示例”,目前可能有太多我们看不到的东西可能会导致问题。您应该拥有所有的
import
语句和实际的、最小的、可运行的代码。非常感谢。
dp = pickle.dumps(frame)
to_send = bytes(f"{len(dp):<{HEADER}}", FORMAT) + bytes(FRAME_MSG, FORMAT) + dp
client.send(to_send)
def receive_msg(msg_len, conn, buffer):
    msg = bytearray()
    while(len(msg) < msg_len):
        msg += conn.recv(buffer)
        # msg.append(conn.recv(buffer))
    return msg
msg = receive_msg(msg_len, conn, 1024)
arr = pickle.loads(msg)
cv2.imshow('window',cv2.cvtColor(arr, cv2.COLOR_BGR2RGB))
-------
image = cv2.imdecode(arr, cv2.COLOR_BGR2RGB)
cv2.imshow('URL2Image',image)
-------
cv2.imshow('window', arr)
-------
img = Image.fromarray(arr, "RGB")
img.show()
-------