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

python中?OpenCV和Pillow處理圖像操作及時間對比

 更新時間:2022年09月28日 11:29:08   作者:Liekkas?Kono  
這篇文章主要介紹了python中OpenCV和Pillow處理圖像操作及時間對比,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

引言

  • 最近再做圖像處理相關(guān)的操作的時間優(yōu)化,用到了OpenCV和Pillow兩個庫,兩個庫各有優(yōu)缺點。各位小伙伴需要按照自己需求選用。
  • 本篇博客做了簡單整理,對常用操作做了對比整理,以及給出具體運行時間說明。

OpenCV和Pillow的優(yōu)缺點對比

優(yōu)點缺點
OpenCV由C和C++編寫,跨平臺,有著多個語言的實現(xiàn),部署比較方便對顯示中文支持較差、Python下常用函數(shù)不是太好看-_-!
Pillow常用函數(shù)操作封裝較好,對顯示中文字體有著很好的支持處理時間較慢

測試環(huán)境:

  • OS: Windows10
  • Python: 3.7.13
  • OpenCV: 4.6.0.66
  • numpy: 1.21.6
  • Pillow: 9.2.0

測試圖像 :

讀取圖像的通道順序區(qū)別:

  • OpenCV讀取圖像,通道順序是:BGR
  • Pillow讀取圖像,通道順序是:RGB

獲得圖像shape區(qū)別:

  • OpenCV.shape(height, width, channel
  • Pillow.size(width, height)

示例代碼:

import cv2
from PIL import Image

img_path = 'images/test_demo.png'

cv_img = cv2.imread(img_path)
height, width, channel = cv_img.shape

pillow_img = Image.open(img_path)
width, height = pillow_img.size

讀寫圖像

讀圖像

示例代碼:

import cv2
from PIL import Image
import numpy as np

png_img_path = 'images/test_demo.png'
jpg_img_path = 'images/test_demo.jpg'

# 由jupyter notebook中魔法命令:%%timeit測得
# 169 ms ± 1.68 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
cv_img = cv2.imread(png_img_path)    

# 52.9 ms ± 541 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)
cv_img = cv2.imread(jpg_img_path)

# 300 ms ± 8.45 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
pillow_img = Image.open(png_img_path)
pillow_img = np.array(pillow_img)

# 47.4 ms ± 1.87 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
pillow_img = Image.open(jpg_img_path)
pillow_img = np.array(pillow_img)

小結(jié):

  • 讀取圖像格式為PNG,且都轉(zhuǎn)為np.array格式,優(yōu)先選擇OpenCV。
  • 讀取圖像格式為JPG,且都轉(zhuǎn)為np.array格式,速度相差不大,按需選取即可。

寫圖像

示例代碼:

save_png_path = 'output/result.png'
save_jpg_path = 'output/result.jpg'

cv_img = cv2.imread(png_img_path)
pillow_img = Image.open(png_img_path)

# 346 ms ± 11.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
cv2.imwrite(save_png_path, cv_img)

# 158 ms ± 4.03 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
cv2.imwrite(save_jpg_path, cv_img)

# 2.81 s ± 38.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
pillow_img.save(save_png_path)

# 51.3 ms ± 1.72 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
t = pillow_img.convert('RGB') 
t.save(save_jpg_path)

小結(jié):

  • 寫圖像格式為PNG,優(yōu)先選擇OpenCV。
  • 寫圖像格式為JPG,選擇Pillow。

縮放圖像

示例代碼:

png_img_path = 'images/test_demo.png'

resize_shape = (2048, 2048)
cv_img = cv2.imread(png_img_path)
pillow_img = Image.open(png_img_path)

# 6.93 ms ± 173 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
cv2.resize(cv_img, resize_shape, interpolation=cv2.INTER_CUBIC)

# 151 ms ± 2.21 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
pillow_img.resize(resize_shape, resample=Image.Resampling.BICUBIC)

小結(jié): OpenCV速度完勝Pillow

旋轉(zhuǎn)圖像

示例代碼:

angle = 38

# 23.6 ms ± 732 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)
h, w = cv_img.shape[:2]
M = cv2.getRotationMatrix2D((w / 2, h / 2), angle, 1)
rot_img = cv2.warpAffine(cv_img, M, (w, h))

# 82.1 ms ± 2.37 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
rot_img_pillow = np.array(pillow_img.rotate(angle))

小結(jié):OpenCV速度完勝Pillow 

總結(jié):

  • 如果可以選擇,優(yōu)先選擇OpenCV處理圖像
  • Pillow可以用來處理顯示中文相關(guān)問題

到此這篇關(guān)于python中 OpenCV和Pillow處理圖像操作及時間對比的文章就介紹到這了,更多相關(guān)python OpenCV處理圖像 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 對json字符串與python字符串的不同之處詳解

    對json字符串與python字符串的不同之處詳解

    今天小編就為大家分享一篇對json字符串與python字符串的不同之處詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python編程中NotImplementedError的使用方法

    Python編程中NotImplementedError的使用方法

    下面小編就為大家分享一篇Python編程中NotImplementedError的使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Scrapy爬蟲框架集成selenium及全面詳細講解

    Scrapy爬蟲框架集成selenium及全面詳細講解

    這篇文章主要為大家介紹了Scrapy集成selenium,以及scarpy爬蟲框架全面講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • Python range、enumerate和zip函數(shù)用法詳解

    Python range、enumerate和zip函數(shù)用法詳解

    這篇文章主要介紹了Python range、enumerate和zip函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • python調(diào)用API接口實現(xiàn)登陸短信驗證

    python調(diào)用API接口實現(xiàn)登陸短信驗證

    在本篇文章里小編給大家整理的是關(guān)于python調(diào)用API接口實現(xiàn)登陸短信驗證的實例內(nèi)容,需要的朋友們可以參考下。
    2020-05-05
  • springboot整合單機緩存ehcache的實現(xiàn)

    springboot整合單機緩存ehcache的實現(xiàn)

    本文主要介紹了springboot整合單機緩存ehcache的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 分位數(shù)回歸模型quantile regeression應用詳解及示例教程

    分位數(shù)回歸模型quantile regeression應用詳解及示例教程

    這篇文章主要為大家介紹了介紹了分位數(shù)回歸quantile regeression的概念詳解及代碼示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 使用Python和Scrapy實現(xiàn)抓取網(wǎng)站數(shù)據(jù)

    使用Python和Scrapy實現(xiàn)抓取網(wǎng)站數(shù)據(jù)

    Scrapy是一個功能強大的網(wǎng)絡(luò)爬蟲框架,允許開發(fā)者輕松地抓取和解析網(wǎng)站內(nèi)容,這篇文章主要為大家介紹了如何使用Python的Scrapy庫進行網(wǎng)站數(shù)據(jù)抓取,需要的可以參考一下
    2023-05-05
  • Python中json文件和jsonl文件的區(qū)別小結(jié)

    Python中json文件和jsonl文件的區(qū)別小結(jié)

    本文主要介紹了JSON和JSONL兩種文件格式的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • Python 鍵盤事件詳解

    Python 鍵盤事件詳解

    這篇文章主要為大家詳細介紹了Python的 鍵盤事件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論

荔波县| 子长县| 安福县| 政和县| 于都县| 阿拉善右旗| 北宁市| 翼城县| 当雄县| 安义县| 吉木萨尔县| 永福县| 微山县| 银川市| 陇川县| 兖州市| 土默特右旗| 武乡县| 财经| 平泉县| 孝感市| 大安市| 安岳县| 尼勒克县| 东安县| 灵武市| 河曲县| 德清县| 长沙县| 吕梁市| 松原市| 宁晋县| 九台市| 白山市| 淳安县| 桐庐县| 平阴县| 涪陵区| 揭东县| 柞水县| 汉中市|