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