小白行天涯 2021-01-26 22:18 采纳率: 0%
浏览 201

type 'numpy.ndarray' to 'str' for 'ext'

import socket
import struct
import numpy as np
import cv2

bufSize = 1024

client = None

HOST = "127.0.0.1"

PORT = 9999

img = None

cv2.namedWindow("Main")


def run():
    global client, img
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect((HOST, PORT))
    length = client.recv(4)
    le = struct.unpack(">I", length)[0]
    imb = b''
    while le > bufSize:
        t = client.recv(bufSize)
        imb += t
        le -= len(t)
    while le > 0:
        t = client.recv(le)
        imb += t
        le -= len(t)
    data = np.frombuffer(imb, dtype=np.uint8)
    img = cv2.imencode(data, cv2.IMREAD_COLOR)
    while True:
        cv2.imshow("Main", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
        length = client.recv(4)
        le = struct.unpack(">I", length)[0]
        imb = b''
        while le > bufSize:
            t = client.recv(bufSize)
            imb += t
            le -= len(t)
        while le > 0:
            t = client.recv(le)
            imb += t
            le -= len(t)
        data = np.frombuffer(imb, dtype=np.uint8)
        ims = cv2.imencode(data, cv2.IMREAD_COLOR)
        img = img + ims
        cv2.waitKey(90)


run()
  • 写回答

1条回答 默认 最新

  • Lotay_天天 优质创作者: 嵌入式与硬件开发技术领域 2023-12-21 15:52
    关注
    1. cv2.imencode(data, cv2.IMREAD_COLOR)修改为cv2.imdecode(data, cv2.IMREAD_COLOR),以便正确解码图像数据。
    2. ims = cv2.imencode(data, cv2.IMREAD_COLOR)修改为ims = cv2.imdecode(data, cv2.IMREAD_COLOR),以便正确解码接收到的图像数据。

    修改后的代码如下所示:

    import socket
    import struct
    import numpy as np
    import cv2
    
    bufSize = 1024
    
    client = None
    
    HOST = "127.0.0.1"
    
    PORT = 9999
    
    img = None
    
    cv2.namedWindow("Main")
    
    
    def run():
        global client, img
        client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        client.connect((HOST, PORT))
        length = client.recv(4)
        le = struct.unpack(">I", length)[0]
        imb = b''
        while le > bufSize:
            t = client.recv(bufSize)
            imb += t
            le -= len(t)
        while le > 0:
            t = client.recv(le)
            imb += t
            le -= len(t)
        data = np.frombuffer(imb, dtype=np.uint8)
        img = cv2.imdecode(data, cv2.IMREAD_COLOR)
        while True:
            cv2.imshow("Main", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
            length = client.recv(4)
            le = struct.unpack(">I", length)[0]
            imb = b''
            while le > bufSize:
                t = client.recv(bufSize)
                imb += t
                le -= len(t)
            while le > 0:
                t = client.recv(le)
                imb += t
                le -= len(t)
            data = np.frombuffer(imb, dtype=np.uint8)
            ims = cv2.imdecode(data, cv2.IMREAD_COLOR)
            img = img + ims
            cv2.waitKey(90)
    
    
    run()
    
    评论

报告相同问题?