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

Python使用OpenCV實(shí)現(xiàn)圖片的批量壓縮

 更新時(shí)間:2025年09月01日 15:32:06   作者:Ratten  
在日常開發(fā)中,我們經(jīng)常需要處理大量的圖片文件,本文將介紹如何使用Python和OpenCV庫來批量壓縮圖片,并對實(shí)現(xiàn)相同功能的技術(shù)進(jìn)行對比分析,希望對大家有所幫助

1. 前言

在日常開發(fā)中,我們經(jīng)常需要處理大量的圖片文件,例如調(diào)整圖片大小以適應(yīng)不同的顯示需求或減少存儲空間。本文將介紹如何使用Python和OpenCV庫來批量壓縮圖片,并對實(shí)現(xiàn)相同功能的技術(shù)進(jìn)行對比分析。

2. 技術(shù)對比選擇

Pillow庫: Pillow是Python Imaging Library (PIL) 的一個(gè)分支,提供了豐富的圖像處理功能。與OpenCV相比,Pillow更專注于圖像處理,API更加簡潔易用。但是,OpenCV在處理計(jì)算機(jī)視覺任務(wù)時(shí)更加強(qiáng)大。

ImageMagick: ImageMagick是一個(gè)功能強(qiáng)大的圖像處理工具集,支持多種編程語言。它提供了命令行工具和編程接口,可以處理各種圖像格式。與OpenCV相比,ImageMagick在處理復(fù)雜圖像操作時(shí)更加靈活,但學(xué)習(xí)曲線較陡峭。

OpenCV:之所以采用 OpenCV,是因?yàn)橹皩W(xué)習(xí)過 OpenCV,同時(shí)之前使用 Pillow 實(shí)現(xiàn)過批量圖片壓縮,所以這次開發(fā)使用 OpenCV。

3. 實(shí)現(xiàn)分析

讀取圖片: 使用cv2.imread()函數(shù)讀取圖片文件。如果圖片無法讀取,函數(shù)會返回None,此時(shí)程序會輸出錯(cuò)誤信息并返回。

計(jì)算新高度: 為了保持圖片的寬高比,我們需要根據(jù)指定的寬度計(jì)算新的高度。公式為:height = int(width * image.shape[0] / image.shape[1]),其中image.shape[0]是原圖片的高度,image.shape[1]是原圖片的寬度。

調(diào)整圖片大小: 使用cv2.resize()函數(shù)調(diào)整圖片大小。interpolation=cv2.INTER_AREA參數(shù)用于指定插值方法,該方法在縮小圖片時(shí)效果較好。

保存圖片: 使用cv2.imwrite()函數(shù)將調(diào)整大小后的圖片保存到指定路徑。

4. 壓縮實(shí)現(xiàn)代碼

實(shí)現(xiàn)圖片壓縮的核心代碼:

import cv2
import os

def resize_image(input_path, output_path, width=600):
    # 讀取圖片
    image = cv2.imread(input_path)
    if image is None:
        print(f"無法讀取圖片: {input_path}")
        return
    
    # 計(jì)算新的高度以保持寬高比
    height = int(width * image.shape[0] / image.shape[1])
    
    # 調(diào)整圖片大小
    resized_image = cv2.resize(image, (width, height), interpolation=cv2.INTER_AREA)
    
    # 保存圖片
    cv2.imwrite(output_path, resized_image)
    print(f"已保存: {output_path}")

5. 批量處理實(shí)現(xiàn)

在主函數(shù),用于遍歷文件夾中的所有圖片文件并調(diào)用resize_image函數(shù)進(jìn)行處理:

def main():
    # 輸入和輸出文件夾路徑
    input_folder = "images"
    output_folder = "output"
    
    # 創(chuàng)建輸出文件夾(如果不存在)
    os.makedirs(output_folder, exist_ok=True)
    
    # 遍歷輸入文件夾中的所有圖片文件
    for filename in os.listdir(input_folder):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, filename)
            resize_image(input_path, output_path)

if __name__ == "__main__":
    main()

6. 執(zhí)行代碼效果

7. 處理前圖片

具體圖片文件分辨率和大小

所有圖片的大小

8. 處理后圖片

具體圖片文件分辨率和大小

所有圖片的大小

9.總結(jié)

使用 OpenCV 庫來批量壓縮圖片。通過cv2.imread()cv2.resize()cv2.imwrite()等函數(shù),我們可以輕松實(shí)現(xiàn)圖片的讀取、調(diào)整大小和保存。

對比了其他實(shí)現(xiàn)相同功能的技術(shù),如Pillow庫和ImageMagick。在實(shí)際開發(fā)中,我們可以根據(jù)具體需求選擇合適的技術(shù)來處理圖片。

由于圖片是給手機(jī)端使用,又擔(dān)心圖片的分辨率太低,導(dǎo)致在手機(jī)上展示效果不好,因此最后設(shè)置寬度是 600px,即便如此,也可以看出整體圖片的總壓縮將近15倍,當(dāng)然具體的不能這么計(jì)算,但是在移動端訪問的確解決了問題。

到此這篇關(guān)于Python使用OpenCV實(shí)現(xiàn)圖片的批量壓縮的文章就介紹到這了,更多相關(guān)OpenCV圖片壓縮內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python列表排序如何使用key參數(shù)掌控排序規(guī)則

    Python列表排序如何使用key參數(shù)掌控排序規(guī)則

    這篇文章介紹了Python列表排序如何使用key參數(shù)掌控排序規(guī)則,文章討論了sort()和sorted()方法的區(qū)別,以及如何選擇合適的排序工具,最后,通過實(shí)戰(zhàn)案例展示了key參數(shù)的靈活應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • django教程如何自學(xué)

    django教程如何自學(xué)

    在本篇內(nèi)容里小編給大家整理了關(guān)于django教程學(xué)習(xí)流程,想自學(xué)的朋友們可以閱讀下。
    2020-07-07
  • 對Pytorch中Tensor的各種池化操作解析

    對Pytorch中Tensor的各種池化操作解析

    今天小編就為大家一篇對Pytorch中Tensor的各種池化操作解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 布同自制Python函數(shù)幫助查詢小工具

    布同自制Python函數(shù)幫助查詢小工具

    Python的自帶文檔功能很不錯(cuò),給與我耳目一新的感覺。如果在CMD中進(jìn)行“行式編程”編程的話,可以隨時(shí)隨地的查詢函數(shù)的功能,非常方便。
    2011-03-03
  • Python全棧之學(xué)習(xí)CSS(2)

    Python全棧之學(xué)習(xí)CSS(2)

    這篇文章主要為大家介紹了Python全棧之CSS,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 基于Python函數(shù)和變量名解析

    基于Python函數(shù)和變量名解析

    今天小編就為大家分享一篇基于Python函數(shù)和變量名解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python+folium繪制精美地圖的示例詳解

    Python+folium繪制精美地圖的示例詳解

    folium是一個(gè)基于leaflet.js的python地圖庫,可以通過folium來操縱數(shù)據(jù),并將其可視化。本文將通過各種示例詳細(xì)講解如何利用folium繪制精美地圖,需要的可以參考一下
    2022-03-03
  • Python Django的安裝配置教程圖文詳解

    Python Django的安裝配置教程圖文詳解

    Django是一個(gè)開放源代碼的Web應(yīng)用框架,由Python寫成,Django是重量級選手中最有代表性的一位。許多成功的網(wǎng)站和APP都基于Django。這篇文章主要介紹了Python Django的安裝配置,需要的朋友可以參考下
    2019-07-07
  • 深入淺析python with語句簡介

    深入淺析python with語句簡介

    with 語句適用于對資源進(jìn)行訪問的場合,確保不管使用過程中是否發(fā)生異常都會執(zhí)行必要的“清理”操作,釋放資源,這篇文章給大家介紹了python with語句簡介,感興趣的朋友一起看看吧
    2018-04-04
  • pyenv命令管理多個(gè)Python版本

    pyenv命令管理多個(gè)Python版本

    這篇文章主要介紹了pyenv命令管理多個(gè)Python版本依賴環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評論

恩平市| 共和县| 汉源县| 望城县| 客服| 郎溪县| 仁布县| 天峻县| 巴彦淖尔市| 游戏| 同德县| SHOW| 手游| 清水县| 高陵县| 乌审旗| 栾城县| 武安市| 赤水市| 钦州市| 乾安县| 隆林| 宜良县| 汝州市| 巴彦县| 于田县| 中江县| 依安县| 南溪县| 克什克腾旗| 长治县| 太湖县| 嘉义市| 平远县| 昭苏县| 遂昌县| 辛集市| 通化市| 谷城县| 孟村| 铜山县|