Ordinary programmer 2019-05-30 15:01 采纳率: 33.3%
浏览 2571
已采纳

python中,opencv图片对象如何转化为f.read()这种类型的bytes

我已经知道从numpy.ndarray (图片)到字节流bytes:
x = img.tobytes()

但是我现在想要的是将numpy.ndarray (图片)到f.read()这种类型的bytes

with open("1.png","rb") as f:
    bytes=f.read()

如图,
numpy.ndarray (图片)使用tobytes()到字节流bytes是上面的编码格式

f.read()是下面的字节编码方式

图片说明

  • 写回答

1条回答 默认 最新

  • 哈夫曼树 2019-09-29 11:54
    关注
    import numpy as np
    import cv2
    import requests
    
    
    def cv2ImgToBytes(img):
        # 如果直接tobytes写入文件会导致无法打开,需要编码成一种图片文件格式(jpg或png),再tobytes
        # 这里得到的bytes 和 with open("","rb") as f: bytes=f.read()的bytes可能不一样,如果用这里得到的bytes保存过一次,下次就f.read()和cv2ImgToBytes(img)会一样
        return cv2.imencode('.png', img)[1].tobytes()
    
    def bytesToCv2Img(bytes):
        return cv2.imdecode(np.fromstring(r.content,"uint8"), 1)
    
    
    img = cv2.imread(r"D:\temp\test.png")
    cv2.imwrite(r"D:\temp\test1.png",img)
    # 等价于
    with open(r"D:\temp\test1.png","wb") as f:
        f.write(cv2ImgToBytes(img))
    
    
    url = 'http://5b0988e595225.cdn.sohucs.com/images/20190623/e185060522bb46a59217ff5d6addfe75.jpeg'
    r = requests.get(url)
    img=bytesToCv2Img(r.content)
    cv2.imshow("Xuan Yi",img)
    cv2.waitKey()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 怎么解决LogIn.vue中多出来的div
  • ¥15 优博讯dt50巴枪怎么提取镜像
  • ¥30 在CodBlock上用c++语言运行
  • ¥15 求C6748 IIC EEPROM程序固化烧写算法
  • ¥50 关于#php#的问题,请各位专家解答!
  • ¥15 python 3.8.0版本,安装官方库ibm_db遇到问题,提示找不到ibm_db模块。如何解决?
  • ¥15 TMUXHS4412如何防止静电,
  • ¥30 Metashape软件中如何将建模后的图像中的植被与庄稼点云删除
  • ¥20 机械振动学课后习题求解答
  • ¥15 IEC61850 客户端和服务端的通讯机制
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部