前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AIGC与AidLux互联应用—Aidlux端AIGC测评

AIGC与AidLux互联应用—Aidlux端AIGC测评

原创
作者头像
用户10559524
发布2023-06-03 17:42:53
2400
发布2023-06-03 17:42:53
举报
文章被收录于专栏:AidLux

本帖子源于AidLux面向众多开发者的AIGC训练营,目的在于实现使用stablediffusion生成图片传输到AidLux端实现目标检测。分享部分传输检测代码及其实现视频如下:

视频内容
代码语言:javascript
复制
import socket
import cv2
import numpy as np
import time
import sys
 
### 本代码主要是客户端代码,aidlux上的Socket_fuwuduan.py是匹配的服务端代码,当服务端代码启动时,由本代码读取一张图片,推送过去
 
def recvall(sock, count):
    buf = b''  # buf是一个byte类型
    while count:
        newbuf = sock.recv(count)
        if not newbuf: return None
        buf += newbuf
        count -= len(newbuf)
    return buf
 
def SendAIGC():
    # 建立sock连接
    # address要连接的aidlux服务器IP地址和端口号
    address = ('192.168.137.116', 9023)
    try:
        # 建立socket对象
        # socket.AF_INET:服务器之间网络通信
        # socket.SOCK_STREAM:流式socket , for TCP
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 开启连接
        sock.connect(address)
    except socket.error as msg:
        print(msg)
        sys.exit(1)
 
    ###########传送AIGC图片#################
    ## 如果本地没有GPU
    if 1:
        frame = cv2.imread("car.png")
        # # 压缩参数,后面cv2.imencode将会用到,对于jpeg来说,15代表图像质量,越高代表图像质量越好为 0-100,默认95
        encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 95]
        # cv2.imencode将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输
        # '.jpg'表示将图片按照jpg格式编码。
        result, imgencode = cv2.imencode('.jpg', frame, encode_param)
        # 建立矩阵
        data = np.array(imgencode)
        # 将numpy矩阵转换成字符形式,以便在网络中传输
        stringData = data.tostring()
 
        # 先发送要发送的数据的长度
        # ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串
        sock.send(str.encode(str(len(stringData)).ljust(16)))
        # 发送数据
        sock.send(stringData)
    ### 如果本地有GPU
    # if 0:
    #     ### 本地生成AIGC图片 ###
    #     ## 添加AIGC代码 ##
    #     #####################
    #     frame = cv2.imread("car.png")
    #     # # 压缩参数,后面cv2.imencode将会用到,对于jpeg来说,15代表图像质量,越高代表图像质量越好为 0-100,默认95
    #     encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 95]
    #     # cv2.imencode将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输
    #     # '.jpg'表示将图片按照jpg格式编码。
    #     result, imgencode = cv2.imencode('.jpg', frame, encode_param)
    #     # 建立矩阵
    #     data = np.array(imgencode)
    #     # 将numpy矩阵转换成字符形式,以便在网络中传输
    #     stringData = data.tostring()
 
    #     # 先发送要发送的数据的长度
    #     # ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串
    #     sock.send(str.encode(str(len(stringData)).ljust(16)))
    #     # 发送数据
    #     sock.send(stringData)
 
    # 读取服务器返回值
    receive = sock.recv(1000)
    receive1 = sock.recv(1000)
    receive2 = sock.recv(1000)
    i = 0
    if len(receive):
        print("图片发送成功")
        print("检测类别及其数目:")
        print(str(receive, encoding='utf-8'),str(receive1, encoding='utf-8'))
        
        # print(str(receive2, encoding='utf-8'))
 ### 之前接受的帧率数据,现在换成image流数据
 
    sock.close()
 
if __name__ == '__main__':
    SendAIGC()

该部分代码用于传输生成的图片到Aidlux端,并且接受返回的回馈信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档