OpenCVを使って画像を加工したいんだけど、
画像を読み込みしたり、保存する方法がわからない…。
なるほど…。
では今回は、「OpenCVで画像の読み込み・保存をする方法」を
できるだけわかりやすく解説いたします。
また、「読み込み・保存をする際の注意点」も紹介いたしますので、
ぜひ最後まで読んでいってください。
OpenCVで画像を読み込みする方法
まずは「OpenCV」で画像を読み込みしてみましょう。
ひとまず全コードをお見せします。
解説は後ほど行います。
import cv2
input_img = cv2.imread('C:/Utatane/input_img.jpg')
事前準備
- OpenCVのインストール
画像を加工したり編集したりするには「OpenCV」のインストールが必要です。
OpenCVを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install opencv-python
※OpenCVを使用したことがある場合は、このインストール作業は不要です。
解説:画像の読み込み
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
import cv2
上記一文にて、「OpenCV」のインポートを行っております。
「OpenCV」を使うための準備といったところでしょうか。
「import opencv」ではありませんのでご注意ください。
このインポートが抜けていると、その後のプログラムが動きませんので必ず書きましょう。
input_img = cv2.imread('C:/Utatane/input_img.jpg')
コードの3行目で画像の読み込みをしています。
まず新しい名前の変数を書いたら、「=(イコール)」を書きます。
新しい名前の変数を作るには注意点があります。下記記事を事前にご覧ください。
イコールの後に「cv2.imread()」を書きます。
()内に「読み込みする画像のパス(フォルダパス/ファイル名)」を書いたら完了です。
【画像のパス】とは
画像の在りかを示す「住所」のようなものです。
画像のパスを間違えると、正常な処理が行われないため注意が必要です。
画像が入っているフォルダを開き、「アドレスバー」に表示された文字がフォルダパスです。
フォルダパスにファイル名を追加すれば、画像のパスが完成します。
「’C:/Utatane/input_img.jpg’」
パスは「’(クォーテーション)」で囲ってください。
また、コピペで「’C:\\」や「’C:¥」になる場合は、「/」に書き直しましょう。
画像の読み込みをする場合、思わぬ落とし穴があります。
次項で詳しく解説いたします。
画像を読み込みする際の注意点
input_img = cv2.imread('C:/Utatane/input_img.jpg')
上記一文にて画像を読み込みできるのですが、読み込みするファイルが存在しなかった場合はどうなるのでしょうか?
エラーが出て処理がストップしそうですが、実際エラーは出ずに処理がそのまま進んでしまうため厄介です。
なので、下記のようにif文を追加して、画像を「読み込みできた」のか「読み込みできなかった」のかを確かめる必要があります。
input_img = cv2.imread('C:/Utatane/input_img.jpg')
if input_img is None:
print('画像の読み込みに失敗しました。ファイルパスを確認してください。')
else:
print('画像の読み込みに成功しました。')
if文についての詳細は、下記記事をご参考ください。
下記のようにダイアログを使用することで、もっとわかりやすくなります。
import cv2
import pyautogui
input_img = cv2.imread('C:/Utatane/input_img.jpg')
if input_img is None:
pyautogui.alert('画像の読み込みに失敗しました。ファイルパスを確認してください。')
else:
print('画像の読み込みに成功しました。')
ダイアログを表示させる方法は、下記記事をご参考ください。
画像が読み込めなかった場合、下記のような原因が考えられます。
- ファイルが存在しない/パスが間違っている
- サポートされていない特殊な形式の画像(JPEG、PNG、BMP、TIFFなどは読み込み可能)
- ファイルが破損している
- アクセスが制限されている(別の端末や隠しファイルなど)
ほとんどの原因が一番上の「ファイルが存在しない/パスが間違っている」なので、パスを再確認しましょう。
OpenCVで画像を保存する方法
次に、加工や編集をした画像を保存する方法を見ていきましょう。
今回は「読み込みした画像を加工せずそのまま保存」させています。
import cv2
input_img = cv2.imread('C:/Utatane/input_img.jpg')
cv2.imwrite('C:/Utatane/output_img.jpg', input_img)
解説:画像の保存
コードの1~3行目は前項で解説しましたので、割愛いたします。
cv2.imwrite('C:/Utatane/output_img.jpg', input_img)
コードの5行目で画像を保存しています。
まず「cv2.imwrite()」を書きます。
()内に「保存先のパス(フォルダパス/ファイル名)」と「保存する画像が入った変数」を書いて完了です。
- cv2.imread():画像の読み込み
- cv2.imwrite():画像の保存
画像を保存する際の注意点
画像の保存先を指定する際には注意が必要です。
読み込みする場合と同じで、存在しないフォルダを指定した場合、画像は保存されません。
また、エラーも出ないため間違いに気づきにくく厄介です。
読み込みしたフォルダと同じ場所に保存するか、
新しいフォルダを作成しましょう。
フォルダを作成する方法は下記記事をご参考ください。
うまく動作しない場合の対処法
画像の読み込みができない
画像ファイルが存在しない場合や、ファイルが破損している場合などは画像の読み込みができません。
画像を読み込みする際の注意点の項を参考に再度確認してください。
画像が保存されない
存在しないフォルダを指定した場合、画像は保存されません。
画像を保存する際の注意点の項を参考に再度確認してください。
エラーが出る
No module named ‘cv2’
これは、OpenCVがインストールできていない場合に出るエラーです。
事前準備の項を参考に、OpenCVのインストールを完了させてください。
OpenCV(4.10.0) ~ img.empty() ~
画像の読み込みが正常に行えていない可能性があります。
画像を読み込みする際の注意点の項を参考に、画像のパスや形式を確認してください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
OpenCVで画像の読み込み・保存をする方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!