最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python圖片和二進(jìn)制轉(zhuǎn)換的三種實(shí)現(xiàn)方式

 更新時(shí)間:2024年09月14日 11:26:25   作者:臉不大的CVer  
本文介紹了將PIL格式、數(shù)組和圖片轉(zhuǎn)換為二進(jìn)制的不同方法,包括使用PIL庫(kù)、OpenCV和直接讀取二進(jìn)制,此外,還提到了數(shù)據(jù)傳輸中base64格式的應(yīng)用,這些信息對(duì)需要進(jìn)行圖片數(shù)據(jù)處理和轉(zhuǎn)換的開發(fā)者非常有用

PIL格式轉(zhuǎn)二進(jìn)制

先讀取為PIL格式,再轉(zhuǎn)為二進(jìn)制

import io
import base64
from PIL import Image

def image2byte(image):
    '''
    圖片轉(zhuǎn)byte
    image: 必須是PIL格式
    image_bytes: 二進(jìn)制
    '''
    # 創(chuàng)建一個(gè)字節(jié)流管道
    img_bytes = io.BytesIO()
    # 將圖片數(shù)據(jù)存入字節(jié)流管道, format可以按照具體文件的格式填寫
    image.save(img_bytes, format="JPEG")
    # 從字節(jié)流管道中獲取二進(jìn)制
    image_bytes = img_bytes.getvalue()
    return image_bytes

def byte2image(byte_data):
    '''
    byte轉(zhuǎn)為圖片
    byte_data: 二進(jìn)制
    '''
    image = Image.open(io.BytesIO(byte_data))
    return image

調(diào)用代碼

image_path = "img/3.jpg"
image = Image.open(image_path)
byte_data = image2byte(image)
image2 = byte2image(byte_data)

數(shù)組轉(zhuǎn)二進(jìn)制

先用opencv讀取為數(shù)組格式,再轉(zhuǎn)為二進(jìn)制

def numpy2byte(image):
    '''
    數(shù)組轉(zhuǎn)二進(jìn)制
    image : numpy矩陣/cv格式圖片
    byte_data:二進(jìn)制數(shù)據(jù)
    '''
    #對(duì)數(shù)組的圖片格式進(jìn)行編碼
    success,encoded_image = cv2.imencode(".jpg",image)
    #將數(shù)組轉(zhuǎn)為bytes
    byte_data = encoded_image.tobytes()
    return byte_data
def byte2numpy(byte_data):
    '''
    byte轉(zhuǎn)numpy矩陣/cv格式
    byte_data:二進(jìn)制數(shù)據(jù)
    image : numpy矩陣/cv格式圖片
    '''
    image = np.asarray(bytearray(byte_data), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
    return image

調(diào)用代碼

image_path = "img/3.jpg"
image = cv2.imread(image_path)
byte_data = numpy2byte(image)
image2 = byte2numpy(byte_data)

圖片轉(zhuǎn)二進(jìn)制

直接讀取圖片為二進(jìn)制

import cv2
import numpy as np

def read2byte(path):
    '''
    圖片轉(zhuǎn)二進(jìn)制
    path:圖片路徑
    byte_data:二進(jìn)制數(shù)據(jù)
    '''
    with open(path,"rb") as f:
        byte_data = f.read()
    return byte_data

def byte2numpy(byte_data):
    '''
    byte轉(zhuǎn)numpy矩陣/cv格式
    byte_data:二進(jìn)制數(shù)據(jù)
    image : numpy矩陣/cv格式圖片
    '''
    image = np.asarray(bytearray(byte_data), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
    return image

調(diào)用代碼

image_path = "img/3.jpg"

byte_data = read2byte(image_path)
image = byte2numpy(byte_data)

延伸

有時(shí)候數(shù)據(jù)傳輸規(guī)定轉(zhuǎn)換為base64格式,可以參考我的另一篇文章 圖片和base64轉(zhuǎn)換的三種方式

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解python polyscope庫(kù)的安裝和例程

    詳解python polyscope庫(kù)的安裝和例程

    這篇文章主要介紹了python polyscope庫(kù)的安裝和例程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python每隔N秒運(yùn)行指定函數(shù)的方法

    python每隔N秒運(yùn)行指定函數(shù)的方法

    這篇文章主要介紹了python每隔N秒運(yùn)行指定函數(shù)的方法,涉及Python的線程與時(shí)間操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享

    OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享

    這篇文章主要介紹了OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享,有需要的朋友可以借鑒參考下,希望可以對(duì)各位讀者的OpenCV算法學(xué)習(xí)能夠有所幫助
    2021-09-09
  • 使用python解析json字段的3種方式實(shí)例

    使用python解析json字段的3種方式實(shí)例

    JSON(JavaScript?Object?Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關(guān)于使用python解析json字段的3種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • python將秒數(shù)轉(zhuǎn)化為時(shí)間格式的實(shí)例

    python將秒數(shù)轉(zhuǎn)化為時(shí)間格式的實(shí)例

    今天小編就為大家分享一篇python將秒數(shù)轉(zhuǎn)化為時(shí)間格式的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Visual Studio code 配置Python開發(fā)環(huán)境

    Visual Studio code 配置Python開發(fā)環(huán)境

    這篇文章主要介紹了Visual Studio code 配置Python開發(fā)環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python asyncio的基本使用示例教程

    Python asyncio的基本使用示例教程

    Task主要作用是幫助event_loop調(diào)度,如果Task發(fā)現(xiàn)它打包的協(xié)程在await一個(gè)對(duì)象(執(zhí)行一個(gè)io操作),則Task會(huì)掛起該協(xié)程的執(zhí)行,把控制權(quán)交回event_loop,讓他去運(yùn)行其他Task,當(dāng)該對(duì)象運(yùn)行完畢,Task將打包的協(xié)程恢復(fù)運(yùn)行,本文介紹Python asyncio使用小結(jié),感興趣的朋友一起看看吧
    2024-02-02
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將序列分解為單獨(dú)變量的方法

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將序列分解為單獨(dú)變量的方法

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將序列分解為單獨(dú)變量的方法,結(jié)合實(shí)例形式分析了Python序列賦值實(shí)現(xiàn)的分解成單獨(dú)變量功能相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • Django ORM判斷查詢結(jié)果是否為空,判斷django中的orm為空實(shí)例

    Django ORM判斷查詢結(jié)果是否為空,判斷django中的orm為空實(shí)例

    這篇文章主要介紹了Django ORM判斷查詢結(jié)果是否為空,判斷django中的orm為空實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 基于Python開發(fā)高效文件搜索與內(nèi)容匹配工具

    基于Python開發(fā)高效文件搜索與內(nèi)容匹配工具

    在日常的開發(fā)和辦公中,查找和篩選特定文件或文件內(nèi)容的需求十分常見,本文將基于PyQt6開發(fā)一個(gè)文件搜索工具,有需要的小伙伴可以參考一下
    2025-03-03

最新評(píng)論

贺兰县| 常山县| 丰原市| 宝鸡市| 紫金县| 巴林左旗| 乌鲁木齐市| 邹城市| 通辽市| 巫山县| 澎湖县| 望奎县| 建始县| 昂仁县| 南涧| 淮北市| 洪湖市| 云南省| 和田县| 彩票| 丰原市| 宜宾县| 阆中市| 河源市| 麦盖提县| 寿阳县| 潞城市| 苗栗县| 浮梁县| 定襄县| 海淀区| 屏东县| 曲阜市| 西安市| 大邑县| 张掖市| 临颍县| 鄂伦春自治旗| 沿河| 万山特区| 浮山县|