【发布时间】:2021-02-22 20:36:15
【问题描述】:
我正在尝试制作一个流媒体应用程序,它可以截取特定窗口的屏幕截图并将其发送到服务器,然后服务器显示 imgs。
捕获是通过 (WORKS)
完成的frame = np.array(ImageGrab.grab(bbox=win32gui.GetWindowRect(window)))
帧发送:(WORKS)
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()
-------
我标记为工作的部分已通过发送示例 numpy 数组数据进行了测试。
---编辑---
原来cv2.imshow() 需要在下面的某个地方调用cv2.waitKey() 才能正常工作。
感谢所有试图提供帮助的人。
【问题讨论】:
-
请尝试制作一个“最小完整的可重现示例” stackoverflow.com/help/minimal-reproducible-example 目前可能有太多我们看不到的东西可能会导致问题。您应该拥有所有
import语句和 actual、minimal、runnable 代码。谢谢。
标签: python arrays numpy sockets cv2