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

python圖像填充與裁剪/resize的實現(xiàn)代碼

 更新時間:2022年08月31日 11:12:28   作者:Andy?Dennis  
這篇文章主要介紹了python圖像填充與裁剪/resize,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

有時候我們需要把圖片填充成某個數(shù)字的整數(shù)倍才能送進(jìn)模型。
例如,有些模型下采樣倍率是8倍,或者16倍,那么輸入的長和高就分別應(yīng)該是8或16的整數(shù)倍。如果圖片達(dá)不到,除了拉伸圖像(會造成比例改變),另一種就是先填充,后裁剪。
相信搞過NLP的同學(xué)并不陌生啦。

代碼

from math import ceil
from torchvision.transforms.functional import to_tensor, to_pil_image
from PIL import Image
import torch
# 填充到最接近base整數(shù)倍的長和寬圖像大小
def get_padding_pic_mask(origin_png, result_png, result_mask_png, rgb=[[130, 206, 255]], base=4):
    # C, H, W
    src = Image.open(origin_png)
    src = to_tensor(src)
    # print(src.shape)  # torch.Size([3, 800, 600])
    # channel: (R, G, B) / 255
    origin_h, origin_w = src.shape[1], src.shape[2]
    print('原圖像大小, height: {}, width: {}'.format(origin_h, origin_w))

    h = ceil(origin_h / base) * base
    w = ceil(origin_w / base) * base

    img = torch.ones(3, h, w)
    # 如果想要填充是黑色則注釋掉上一句,換下面這一句
    # img = torch.zeros(3, h, w)

    img[:, :origin_h, :origin_w] = src 
    # 保存填充后的圖片
    to_pil_image(img).save(result_png)

    # 處理一下mask
    mask = torch.tensor(rgb) / 255

    mask = mask.view(3, 1, 1).repeat(1, h, w)
    # 保存填充后的mask
    to_pil_image(mask).save(result_mask_png)
    

# 圖像輸出后我們需要clip一下
def clip_unpadding(input_png, output_png, origin_h, origin_w):
    # C, H, W
    img = Image.open(input_png)
    img = to_tensor(img)
    img = img[:, :origin_h, :origin_w]
    # 保存裁剪后的圖片
    to_pil_image(img).save(output_png)

if __name__ == '__main__':
    # origin_png = 'pic/pic.jpg'
    # result_png = 'pic/pic_padding.jpg'
    # result_mask_png = 'pic/mask_padding.jpg'
    # get_padding_pic_mask(origin_png, result_png, result_mask_png)

    input_png = 'pic/pic_padding.jpg'
    output_png = 'pic/pic_clip.jpg'
    # 原圖像大小, height: 567, width: 390
    clip_unpadding(input_png, output_png, 567, 390)

resize

有時候我們也要改變圖片的寬和高。

from PIL import Image
def resize_img(origin_png, resize_png, height, width):
    img = Image.open(origin_png)
    img = img.resize((width, height))
    img.save(resize_png)
if __name__ == '__main__':
    origin_png = 'pic/white.jpg'
    resize_png = 'pic/white_resize.png'
    resize_img(origin_png, resize_png, 800, 600)

到此這篇關(guān)于python圖像填充與裁剪/resize的文章就介紹到這了,更多相關(guān)python圖像resize內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python docutils文檔編譯過程方法解析

    Python docutils文檔編譯過程方法解析

    這篇文章主要介紹了Python docutils文檔編譯過程方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • python opencv實現(xiàn)證件照換底功能

    python opencv實現(xiàn)證件照換底功能

    這篇文章主要為大家詳細(xì)介紹了python opencv實現(xiàn)證件照換底功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python使用Matplotlib繪制多種常見圖形

    python使用Matplotlib繪制多種常見圖形

    這篇文章主要介紹了python使用Matplotlib繪制多種常見圖形,文章圍繞主題展開詳細(xì)的用Matplotlib繪制內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05
  • Python描述符descriptor使用原理解析

    Python描述符descriptor使用原理解析

    這篇文章主要介紹了Python 描述符descriptor使用原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • pandas如何將DataFrame?轉(zhuǎn)為txt文本去除引號

    pandas如何將DataFrame?轉(zhuǎn)為txt文本去除引號

    這篇文章主要介紹了pandas如何將DataFrame?轉(zhuǎn)為txt文本去除引號,文中補充介紹了DataFrame導(dǎo)CSV?txt?||?每行有雙引號的原因及解決辦法,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • openCV入門學(xué)習(xí)基礎(chǔ)教程第三篇

    openCV入門學(xué)習(xí)基礎(chǔ)教程第三篇

    pencv是用于快速處理圖像處理、計算機視覺問題的工具,支持多種語言進(jìn)行開發(fā)如c++、python、java等,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 一文教會你用nginx+uwsgi部署自己的django項目

    一文教會你用nginx+uwsgi部署自己的django項目

    uWSGI是一個Web服務(wù)器,它實現(xiàn)了WSGI協(xié)議、uwsgi、http等協(xié)議,下面這篇文章主要給大家介紹了關(guān)于用nginx+uwsgi部署自己的django項目的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Python多線程編程(五):死鎖的形成

    Python多線程編程(五):死鎖的形成

    這篇文章主要介紹了Python多線程編程(五):死鎖的形成,本文講解了死鎖的概念、死鎖示例、避免死鎖的方法等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Python中time.sleep(0.001)是否真的只等待1毫秒

    Python中time.sleep(0.001)是否真的只等待1毫秒

    這篇文章主要介紹了Python中time.sleep(0.001)是否真的只等待1毫秒,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務(wù)端功能示例

    Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務(wù)端功能示例

    這篇文章主要介紹了Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務(wù)端功能,結(jié)合實例形式分析了Python基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務(wù)端數(shù)據(jù)發(fā)送與接收相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論

平谷区| 红原县| 印江| 丽水市| 墨江| 甘肃省| 丰镇市| 安多县| 桂平市| 无为县| 广丰县| 陆河县| 绥江县| 都安| 杭锦旗| 淄博市| 龙门县| 六枝特区| 永城市| 孝义市| 泽普县| 卓尼县| 镇巴县| 陇西县| 定西市| 石台县| 三河市| 日土县| 保靖县| 镇江市| 鹿泉市| 嵩明县| 囊谦县| 额济纳旗| 合作市| 东港市| 米林县| 民勤县| 通江县| 乌兰浩特市| 建平县|