首页 > 其他分享 >字节流简述

字节流简述

时间:2022-12-12 13:59:11浏览次数:50  
标签:字节 img cv2 传输 简述 xe7 path

字节简述

字节概述

字节(byte)是计算机用于计量存储容量的一中计量单位。B(字节)KB(千字节)

无论网络上两个终端需要传输什么数据,都需要传输二进制bit的数据。

既然传输的都是bit 为什么不把变量转化为bit类型。

原因是大部分的电脑的内存最小单位是8bit 所以无论传输什么类型的变量都要吧变量的数据转换为字节数据。

计算机能存储的唯一东西就是bytes(因为字节是电脑中表示信息的最小单位) 为了在计算机中存储东西我们首先将其编码为目标格式如MP3,MP4 若想网络传输需要转化为bytes

  • byte 字节 八位 (其中每四位可以用一个16进制数来表示)一个字节可以用两个十六进制的数进行表示。字节非常适合网络传输

    b'\xe6\x88\x91\xe7\x88\xb1Python\xe7\xbc\x96\xe7\xa8\x8b'
    其中 \x 表示十六进制,e 6 就是两个十六进制数
    
  • bit 代表一位 非1即0

字节串 字符串 字符集

  • bytes 由多个字节组成,操作单位为字节(八位)类似字节容器。
  • 字符串 str
  • Unicode 字符集,包括汉字,为两个字节。实际使用的utf-8,utf-16 都属于 Unicode 字符集。

转换

  • 字符串转换为字节串(按照指定的字符集进行编码即可)

    b5="你好,世界".encode('utf-8')
    print(b5)
    b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c.'
    
    
  • 字节串转字符串

    str= b5.decode("utf-8")
    

如何把numpy.arry 转换成字节用于封包传输。

  • 通常需要先进行存储图片,在读取并封包发送
import cv2
img_path = "/home/hqt/Desktop/DeepinScreenshot_select-area_20221126233252.png"
# 打开图片文件获取二进制数据 rb 表示二进制按字节解释。
with open(img_path,"rb") as f:
    #读取图片的二进制数据
    bin_contents = f.read() 
   
result = requests.post('http://192.168.110.71:8080/', params={'threshold': 0.1},
                       data=bin_contents).json()
  • 直接在内存中转成字节封包处理。

    image=cv2.imread(img_path)
    success,encode_image=cv2.imencode(".jpg",image)#### 很重要 需要先进行编码
    img=encode_image.tobytes()### 可以直接发型
    with open("/home/hqt/Desktop/kk.jpg",'wb') as f:###客户端接收直接存储。
        f.write(img)
    print(img[:20])
    
  • 重点

    1 图片转字节(需要先进行按照需要的格式进行编码并转成字节串)

    img = cv2.imread(img_path)
    imgbytes = cv2.imencode(".jpg", img)[1].tobytes()
    
     2 字节转图片(read (rb))后转numpy.array 
    
#第一种方法先读取图片为字节,再转图片array 
with open(img_file, "rb") as f:
      img_data = f.read()
      img = cv2.imdecode(np.fromstring(img_data, dtype=np.uint8), 1)

#第二种方法。采用numpy的fromfile
img_path = r"test.jpg"
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 1)

标签:字节,img,cv2,传输,简述,xe7,path
From: https://www.cnblogs.com/ryzemagic/p/16975840.html

相关文章

  • 0停机迁移Nacos?Java字节码技术来帮忙
    摘要:本文介绍如何将SpringCloud应用从开源Consul无缝迁移至华为云Nacos。本文分享自华为云社区《0停机迁移Nacos?Java字节码技术来帮忙》,作者:华为云PaaS服务小智。1.市场......
  • 浅谈字节码增强技术系列1-字节码增强概览
    作者:董子龙前言前段时间一直想参照lombok的实现原理写一篇可以生成业务单据修改记录插件的专利,再查阅资料的过程中,偶然了解到了字节码增强工具-byteBuddy。但是由于当时时间......
  • django基础操作简述
    django基础操作简述静态文件static文件夹---存一些css,js,img,第三方模块等,也可以再分文件夹如:我们可以要引入本地的bootstrap的css和js文件,那么就可以放在static文件夹......
  • Java 字节码增强技术小记
    总结是什么:字节码增强技术用于对静态字节码文件进行修改或动态修改运行中的程序。使用场景有【动态代理、AOP、ORM框架】、【热部署、Mock测试、性能诊断工具】等,例如动......
  • 2021 届 字节跳动 校招提前批开始啦~~~
    又是一年校招季~~字节跳动的2021届校招提前批已经开始了~~因为疫情,今年各家公司的大规模校园宣讲多多少少都会受到影响。所以大家一定要特别关注校招的线上宣传活动,公众号......
  • TLS协议简述
    一、为什么使用TLS在SSL/TLS出现之前,很多应用层协议(http、ftp、smtp等)都存在着网络安全问题,例如大家所熟知的http协议,在传输过程中使用的是明文信息,传输报文一旦被截获便......
  • io流之【字节/字符缓冲流】
    缓冲流,也叫高效流,是对4个基本的Filexxx流的增强,所以也是4个流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,Buffered......
  • io流之字节流【基础流】
    ①字节输入流:读取文件中的数据packagecom.Lucky.io.byteStream;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOExceptio......
  • java基础,注释,标识符。数据类型,字节
    一.注释注释不会被执行,是我们写代码的人看的书写注释是一个非常好的习惯平时写代码一定要注意规范java的注释有三种单行注释多行注释文档注释public......
  • 简述古建筑电气火灾的起因及预防措施
     摘要    法国当地时间2019年4月15日下午,始建1163年的巴黎圣母院突发大火。巴西当地时间2018年9月2日晚,拉丁美洲历史悠久、藏品丰富的巴西国家博物馆惨遭火灾,200年......