画質と解像度をバッチで変更する (Python)

Python の OpenCV を使用して画質と解像度をバッチで変更する方法

ディープラーニングでデータセットを作成する場合、元のデータセットとして高解像度の画像は必要ない場合が多いですが、以下のプログラムではPythonとopencvのライブラリを利用して画像劣化処理を実現しています。画像の品質と解像度をバッチで変更するのにご協力ください。この記事では、Python の OpenCV ライブラリを使用してこの機能を実現する方法を説明します。

1. OpenCVライブラリをインストールする

始める前に、Python と OpenCV ライブラリがインストールされていることを確認する必要があります。OpenCV ライブラリをインストールしていない場合は、次のコマンドを使用してインストールできます。

pip install opencv-python

2. OpenCV ライブラリとその他の必要なライブラリをインポートします。

コードを書き始める前に、OpenCV ライブラリとその他の必要なライブラリをインポートする必要があります。

import cv2
import os

3. 入力ディレクトリと出力ディレクトリを設定します。

画質と解像度のバッチ変更を開始する前に、入力ディレクトリと出力ディレクトリを設定する必要があります。入力ディレクトリは処理対象の画像が含まれるフォルダーへのパスであり、出力ディレクトリは処理された画像が保存されるフォルダーへのパスです。osライブラリを使用してディレクトリを作成できます。

input_folder = 'input/'
output_folder = 'output/'

os.makedirs(output_folder, exist_ok=True)

4. 画質と解像度を一括で変更する

これで、画質と解像度をバッチで変更できるようになりました。メソッドを使用して画像を読み取りcv2.imread()cv2.imwrite()メソッドを使用して画像を保存し、cv2.resize()メソッドを使用して画像の解像度を変更できます。サンプルコードは次のとおりです。

for filename in os.listdir(input_folder):
    if filename.endswith('.jpg') or filename.endswith('.png'):
        image = cv2.imread(os.path.join(input_folder, filename))
        
        # 修改图像分辨率
        resized_image = cv2.resize(image, (800, 600))

        # 修改图像质量
        jpeg_file = os.path.join(output_folder, filename)
        cv2.imwrite(jpeg_file, resized_image, [int(cv2.IMWRITE_JPEG_QUALITY), 90])

上記のコードは、入力ディレクトリ内のすべての画像ファイルを走査して、ファイルが「.jpg」で終わるか「.png」で終わるかを判断します。次に、cv2.resize()画像の解像度を変更する方法と、cv2.imwrite()画像を保存するときにパラメータを調整して画質を変更する方法を使用しますcv2.IMWRITE_JPEG_QUALITY

5。結論

Python の OpenCV ライブラリを使用すると、画像の品質と解像度をバッチで簡単に変更できます。入力ディレクトリと出力ディレクトリを設定し、対応する関数を呼び出すだけで、画像データをバッチですばやく処理できます。この記事が、Python の OpenCV ライブラリの理解と使用に役立つことを願っています。

以下是一个小示例

import cv2
import os
address = r"C:\Users\lenovo\Desktop\paperNeed" # 存放原图片文件夹路径
list = os.listdir(address)
for i, file in enumerate(list):
    firstname = os.path.splitext(file)[0]
    typename = os.path.splitext(file)[1]
    os.rename("{}/{}".format(address, file), "{}/{}.jpg".format(address, i))
    newpath = address + "/"+"{}.jpg".format(i)

    cv2.namedWindow("Image")  # 创建窗口
    img = cv2.imread(newpath)
    cv2.imshow("Image", img)
    changepic = r"C:\Users\lenovo\Desktop\paperNeed2\{}.jpg".format(i) # 修改完质量的图片存放路径
    cv2.imwrite(changepic, img, [int(cv2.IMWRITE_JPEG_QUALITY), 10])

cv2.waitKey(0)
cv2.destroyWindow("Image")  # 关闭窗口

品質を変更する主なコードは次のとおりです。

 cv2.imwrite(changepic, img, [int(cv2.IMWRITE_JPEG_QUALITY), 10])
異なる画像形式には異なるパラメータが適用されます

画像形式が .jpeg または .jpg 形式の場合は、cv2.CV_IMWRITE_JPEG_QUALITY パラメータを選択し、その値は 0 ~ 100 です (値が大きいほど画質が高くなります)。画像形式が .webp 形式の場合は
、 cv2.CV_IMWRITE_WEBP_QUALITY パラメータ、値は 0 ~ 100
画像形式が .png 形式の場合、cv2.CV_IMWRITE_PNG_COMPRESSION パラメータ、値は 0 ~ 9

おすすめ

転載: blog.csdn.net/m0_46114594/article/details/116069109