小白行天涯 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()
    
    评论

报告相同问题?

悬赏问题

  • ¥15 deepin系统下挂载nas硬盘失败有知道后续命令和步骤的吗?
  • ¥15 寻找爱立信moshell 18.0 有偿
  • ¥15 找个代做火山图,富集分析和ppi的,有偿
  • ¥15 通过摄像头实现云录制功能
  • ¥15 LTspice中为什么同一个波形图,调整坐标轴后平均值变了
  • ¥15 深度学习CNN回归优化
  • ¥25 多设备数据融合显示控制
  • ¥15 需要给视屏加rgb多种颜色光下图这个软件 不是要什么代码看懂在评论
  • ¥100 Qt编程中数据模型应用问题
  • ¥15 那个软件可以给视屏加rgb这个氛围光 给视屏加不是图片 给视频加这种光rgb的 有这种的手机端或者电脑端 电脑端最好