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

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

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

1. 前言

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

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

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

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

OpenCV:之所以采用 OpenCV,是因為之前學(xué)習過 OpenCV,同時之前使用 Pillow 實現(xiàn)過批量圖片壓縮,所以這次開發(fā)使用 OpenCV。

3. 實現(xiàn)分析

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

計算新高度: 為了保持圖片的寬高比,我們需要根據(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ù)用于指定插值方法,該方法在縮小圖片時效果較好。

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

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

實現(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
    
    # 計算新的高度以保持寬高比
    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. 批量處理實現(xiàn)

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

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ù),我們可以輕松實現(xiàn)圖片的讀取、調(diào)整大小和保存。

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

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

到此這篇關(guān)于Python使用OpenCV實現(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ū)別,以及如何選擇合適的排序工具,最后,通過實戰(zhàn)案例展示了key參數(shù)的靈活應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • django教程如何自學(xué)

    django教程如何自學(xué)

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

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

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

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

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

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

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

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

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

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

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

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

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

    深入淺析python with語句簡介

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

    pyenv命令管理多個Python版本

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

最新評論

西华县| 涪陵区| 罗源县| 资溪县| 通州区| 乐至县| 鹤岗市| 平度市| 广宗县| 岳池县| 手游| 南安市| 交城县| 大邑县| 武乡县| 宁德市| 宜宾市| 梓潼县| 秦安县| 阿克苏市| 汉中市| 嘉义县| 晋中市| 和硕县| 宜兰县| 崇信县| 京山县| 历史| 澄城县| 蒙山县| 珲春市| 多伦县| 鹤壁市| 高平市| 宜都市| 大化| 会东县| 宁晋县| 鄂州市| 通海县| 嘉善县|