【Python+OpenCV入門学習】三、画像の読み取り、表示、保存
この記事では、画像を読み取る方法、画像を表示する方法、画像を保存する方法について学習します.これはOpenCVを学ぶ上で最も基本的な問題です.
主にいくつかの関数の使用を学び、これらの関数は今後の学習でよく使われる.
環境:Windows XP(X 86)Python 3.4 OpenCV 3.1.0
一、画像の読み取り
画像の読み出しの主な関数はcv 2である.imread().
前の記事で紹介したオンラインヘルプドキュメントでimread関数を検索すると、その関数の詳細がわかります.次のようになります.
機能:画像ファイルを読み込む.
パラメータ:
パラメータ1はファイル名で、画像ファイルを読み込むファイル名を単一引用符で記入します.
注意:ファイル名のみを記入する場合、画像ファイルはPythonプログラムファイルと同じフォルダの下に置く必要があります.そうしないとエラーになります.一緒に置かない場合は、「E:CSDNブログ資料を書く」などの絶対パスを記入することができます.Opencv入門学習一、画像の読み取り、表示、保存russia 2018.jpg’は、エラーが発生する可能性があります.問題は反スラッシュにあります.解決方法は正スラッシュ/に変更すればいいです.OpenCVでサポートされている画像フォーマットは以下の通りです(一般的なフォーマットのみを列挙します):
Windowsビットマップ:接尾辞名bmp
JPEGファイル:jpeg/jpgという接尾辞
JPEG 2000:jp 2という接尾辞
ポータブルネットワーク画像ファイルポータブルネットワーク画像ファイル:pngという接尾辞
TIFFファイル:tiff/tifという接尾辞
パラメータ2はフルサイズflag、フラグ、デフォルト値IMREAD_COLOR、値は以下の通りです.
IMREAD_UNCHANGED:設定すると、ロードされた画像がそのまま返されます(Alphaチャネルがあります.そうしないと切り取られます). IMREAD_GRAYSCALE:設定すると、常に画像を単一チャネル階調画像に変換して読み込みます. IMREAD_COLOR:設定すると、常に画像を3チャンネルBGRカラー画像に変換して読み込みます. IMREAD_ANYDEPTH:設定されている場合、対応する奥行きが入力されている場合は16ビット/32ビットの画像を返します.そうでない場合は8ビットに変換します. IMREAD_ANYCOLOR:設定すると、画像は任意の可能な色で読み出されます. IMREAD_LOAD_GDAL:設定すると、常にGDALドライバを使用して画像をロードします. IMREAD_REDUCED_GRAYSCALE_2:設定すると、常に画像を単一チャネルの階調画像に変換し、画像サイズを1/2小さくします. IMREAD_REDUCED_COLOR_2:設定されている場合、画像は常に3チャンネルBGRカラー画像に変換され、画像サイズは1/2小さくなります. IMREAD_REDUCED_GRAYSCALE_4:設定すると、常に画像を単一チャネルの階調画像に変換し、画像サイズを1/4小さくします. IMREAD_REDUCED_COLOR_4:設定すると、常に3チャンネルBGRカラー画像に変換され、画像サイズは1/4小さくなります.
IMREAD_REDUCED_GRAYSCALE_8:設定した場合、画像は常に単一チャネルの階調画像に変換され、画像サイズは1/8減少します.
IMREAD_REDUCED_COLOR_8:設定されている場合、画像は常に3チャンネルBGRカラー画像に変換され、画像サイズは1/8減少する
よく使われるのは上位3種類です.flagsは整数型なので、数値を入力してもいいです.
flags>0:IMREADと同等COLOR. flags=0:IMREADと同等GRAYSCALE.
flags<0:IMREADに等しいUNCHANGED.
通常は1、0、-1を与え、他の整数型を与えてもよい.
戻り値:Matタイプ.Opencv 2から画像を格納するためのデータ型がMatであり、
二、画像の表示
画像を読み取ると、次は画像を表示します.主な関数はcv 2です.namedWindows()、cv2.imshow().以上の2つの関数で画像を表示することができ、ここではさらに3つの関数cv 2を紹介する.waitKey()、cv2.destroyWindow()、cv2.destroyAllWindows().
2.1 cv2.namedWindows関数の説明
機能:ウィンドウを作成します.
パラメータ:
パラメータの1つはwinnameで、作成したウィンドウに名前を付けて、後でこの名前でウィンドウを呼び出します.
パラメータの2型flags、ウィンドウの属性を定義して、デフォルト値はWINDOW_ですAUTOSIZE、その他の値は以下の通りです.
WINDOW_NORMAL:ユーザーはウィンドウのサイズを調整することができます(制約されません)/フルスクリーンウィンドウを通常のサイズに切り替えることもできます.WINDOW_AUTOSIZE:ユーザーはウィンドウサイズを調整できず、表示画像のサイズによってウィンドウサイズが変化します.WINDOW_OPENGL:openglでサポートされているウィンドウがあります.WINDOW_FULLSCREEN:ウィンドウをフルスクリーンに変更します.WINDOW_FREERATIO:画像のスケールに従って画像を調整しないでウィンドウに表示する
WINDOW_KEEPRATIO:画像のスケールに合わせて画像を調整してウィンドウに表示する
よくあるのは前の2つです.
2.2 cv2.imshow関数の紹介
機能:指定したウィンドウに画像を表示します.
パラメータ:
パラメータ1はウィンドウ名です.
パラメータ2は、表示する画像に設定されます.
この関数の後、関数waitKeyに従って、ウィンドウに表示されるミリ秒を指定する必要があります.
2.3 cv2.waitKey関数の説明
機能:キーを待つか、ミリ秒遅延します.
パラメータ:デフォルト値は0です.0に設定すると、永続的な待機キーが表示され、ゼロ以外に設定され、delayミリ秒の遅延が表示されます.この関数は、少なくとも1つのウィンドウが作成され、ウィンドウがアクティブな場合にのみ機能します.
2.4 cv2.destroyWindow/cv2.destroyAllWindows関数の説明
機能は指定したウィンドウを破壊することです.パラメータwinnameは、閉じたいウィンドウに設定されます.
機能はすべてのウィンドウを破壊することです.
三、画像の保存
必要な画像をファイルに保存する必要があることがよくあります.使用する関数はcv 2である.imwrite().
機能:画像をファイルとして保存します.
パラメータ:
パラメータ1はファイル名で、保存するファイル名を指定します.
パラメータ2は保存する画像です.
パラメータ3は、保存した画像ファイルのプロパティを設定し、次の値をとります.
MWRITE_JPEG_QUALITY:JPEGの場合、0から100までの品質(高ければ高いほど良い)です.既定値は95です.IMWRITE_JPEG_PROGRESSIVE:JPEG機能、0または1を有効にし、デフォルトはFalseです.IMWRITE_JPEG_OPTIMIZE:JPEG機能を有効にし、0または1、デフォルトはFalseです.IMWRITE_JPEG_RST_INTERVAL:JPEG再起動間隔、0-65535、デフォルトは0-再起動しません.IMWRITE_JPEG_LUMA_QUALITY:輝度品質別レベル、0-100、デフォルトは0-使用しません.IMWRITE_JPEG_CHROMA_QUALITY:独立した色度品質レベル、0-100、デフォルトは0-使用しません.IMWRITE_PNG_COMPRESSION:PNGの場合、0から9の圧縮レベルであってもよい.より高い値は、より小さなサイズとより長い圧縮時間を意味します.既定値は3です.IMWRITE_PNG_STRATEGY:cv::ImwritePNGFlagsの1つで、デフォルトはIMWRITE_PNG_STRATEGY_DEFAULT. IMWRITE_PNG_BILEVEL:バイナリレベルPNG、0または1、デフォルトは0です.IMWRITE_PXM_BINARY:PPM、PGMまたはPBMの場合、バイナリフォーマットフラグ、0または1であることができる.既定値は1です.
IMWRITE_WEBP_QUALITY:WEBPの場合、1から100までの品質(高ければ高いほど良い)です.既定では(パラメータは一切ありません)、質量が100を超える場合は無損圧縮が使用されます.
初心者は、この関数の3番目の変数を気にしなくてもいいです.
四、例
コードは次のとおりです.
実験の結果,ウィンドウ表示画像がポップアップされ,2 s後にウィンドウが消失した.ウィンドウは次のとおりです.
五、進級
興味のある人は、グレースケール画像で画像を読み取り、ウィンドウのプロパティを変更したり、画像を異なる画像タイプのファイルに保存したりするなど、パラメータを変更することができます.また、matplotlibライブラリ(MatplotlibはPythonのグラフィックライブラリであり、様々な描画方法を提供している)に詳しい場合は、このライブラリを使用して画像を表示してみてください.この訓練によって関数に対する認識が深まる.
主にいくつかの関数の使用を学び、これらの関数は今後の学習でよく使われる.
環境:Windows XP(X 86)Python 3.4 OpenCV 3.1.0
一、画像の読み取り
画像の読み出しの主な関数はcv 2である.imread().
前の記事で紹介したオンラインヘルプドキュメントでimread関数を検索すると、その関数の詳細がわかります.次のようになります.
Mat cv::imread (const String & filename, int flags = IMREAD_COLOR)
機能:画像ファイルを読み込む.
パラメータ:
パラメータ1はファイル名で、画像ファイルを読み込むファイル名を単一引用符で記入します.
注意:ファイル名のみを記入する場合、画像ファイルはPythonプログラムファイルと同じフォルダの下に置く必要があります.そうしないとエラーになります.一緒に置かない場合は、「E:CSDNブログ資料を書く」などの絶対パスを記入することができます.Opencv入門学習一、画像の読み取り、表示、保存russia 2018.jpg’は、エラーが発生する可能性があります.問題は反スラッシュにあります.解決方法は正スラッシュ/に変更すればいいです.OpenCVでサポートされている画像フォーマットは以下の通りです(一般的なフォーマットのみを列挙します):
Windowsビットマップ:接尾辞名bmp
JPEGファイル:jpeg/jpgという接尾辞
JPEG 2000:jp 2という接尾辞
ポータブルネットワーク画像ファイルポータブルネットワーク画像ファイル:pngという接尾辞
TIFFファイル:tiff/tifという接尾辞
パラメータ2はフルサイズflag、フラグ、デフォルト値IMREAD_COLOR、値は以下の通りです.
IMREAD_UNCHANGED:設定すると、ロードされた画像がそのまま返されます(Alphaチャネルがあります.そうしないと切り取られます). IMREAD_GRAYSCALE:設定すると、常に画像を単一チャネル階調画像に変換して読み込みます. IMREAD_COLOR:設定すると、常に画像を3チャンネルBGRカラー画像に変換して読み込みます. IMREAD_ANYDEPTH:設定されている場合、対応する奥行きが入力されている場合は16ビット/32ビットの画像を返します.そうでない場合は8ビットに変換します. IMREAD_ANYCOLOR:設定すると、画像は任意の可能な色で読み出されます. IMREAD_LOAD_GDAL:設定すると、常にGDALドライバを使用して画像をロードします. IMREAD_REDUCED_GRAYSCALE_2:設定すると、常に画像を単一チャネルの階調画像に変換し、画像サイズを1/2小さくします. IMREAD_REDUCED_COLOR_2:設定されている場合、画像は常に3チャンネルBGRカラー画像に変換され、画像サイズは1/2小さくなります. IMREAD_REDUCED_GRAYSCALE_4:設定すると、常に画像を単一チャネルの階調画像に変換し、画像サイズを1/4小さくします. IMREAD_REDUCED_COLOR_4:設定すると、常に3チャンネルBGRカラー画像に変換され、画像サイズは1/4小さくなります.
IMREAD_REDUCED_GRAYSCALE_8:設定した場合、画像は常に単一チャネルの階調画像に変換され、画像サイズは1/8減少します.
IMREAD_REDUCED_COLOR_8:設定されている場合、画像は常に3チャンネルBGRカラー画像に変換され、画像サイズは1/8減少する
よく使われるのは上位3種類です.flagsは整数型なので、数値を入力してもいいです.
flags>0:IMREADと同等COLOR. flags=0:IMREADと同等GRAYSCALE.
flags<0:IMREADに等しいUNCHANGED.
通常は1、0、-1を与え、他の整数型を与えてもよい.
戻り値:Matタイプ.Opencv 2から画像を格納するためのデータ型がMatであり、
二、画像の表示
画像を読み取ると、次は画像を表示します.主な関数はcv 2です.namedWindows()、cv2.imshow().以上の2つの関数で画像を表示することができ、ここではさらに3つの関数cv 2を紹介する.waitKey()、cv2.destroyWindow()、cv2.destroyAllWindows().
2.1 cv2.namedWindows関数の説明
void cv::namedWindow (const String & winname,int flags = WINDOW_AUTOSIZE )
機能:ウィンドウを作成します.
パラメータ:
パラメータの1つはwinnameで、作成したウィンドウに名前を付けて、後でこの名前でウィンドウを呼び出します.
パラメータの2型flags、ウィンドウの属性を定義して、デフォルト値はWINDOW_ですAUTOSIZE、その他の値は以下の通りです.
WINDOW_NORMAL:ユーザーはウィンドウのサイズを調整することができます(制約されません)/フルスクリーンウィンドウを通常のサイズに切り替えることもできます.WINDOW_AUTOSIZE:ユーザーはウィンドウサイズを調整できず、表示画像のサイズによってウィンドウサイズが変化します.WINDOW_OPENGL:openglでサポートされているウィンドウがあります.WINDOW_FULLSCREEN:ウィンドウをフルスクリーンに変更します.WINDOW_FREERATIO:画像のスケールに従って画像を調整しないでウィンドウに表示する
WINDOW_KEEPRATIO:画像のスケールに合わせて画像を調整してウィンドウに表示する
よくあるのは前の2つです.
2.2 cv2.imshow関数の紹介
void cv::imshow (const String & winname, InputArray mat )
機能:指定したウィンドウに画像を表示します.
パラメータ:
パラメータ1はウィンドウ名です.
パラメータ2は、表示する画像に設定されます.
この関数の後、関数waitKeyに従って、ウィンドウに表示されるミリ秒を指定する必要があります.
2.3 cv2.waitKey関数の説明
int cv::waitKey (int delay = 0)
機能:キーを待つか、ミリ秒遅延します.
パラメータ:デフォルト値は0です.0に設定すると、永続的な待機キーが表示され、ゼロ以外に設定され、delayミリ秒の遅延が表示されます.この関数は、少なくとも1つのウィンドウが作成され、ウィンドウがアクティブな場合にのみ機能します.
2.4 cv2.destroyWindow/cv2.destroyAllWindows関数の説明
void cv::destroyWindow ( constString & winname )
機能は指定したウィンドウを破壊することです.パラメータwinnameは、閉じたいウィンドウに設定されます.
void cv::destroyAllWindows()
機能はすべてのウィンドウを破壊することです.
三、画像の保存
必要な画像をファイルに保存する必要があることがよくあります.使用する関数はcv 2である.imwrite().
bool cv::imwrite( const String & filename, InputArray img, const std::vector< int > & params = std::vector< int >() )
機能:画像をファイルとして保存します.
パラメータ:
パラメータ1はファイル名で、保存するファイル名を指定します.
パラメータ2は保存する画像です.
パラメータ3は、保存した画像ファイルのプロパティを設定し、次の値をとります.
MWRITE_JPEG_QUALITY:JPEGの場合、0から100までの品質(高ければ高いほど良い)です.既定値は95です.IMWRITE_JPEG_PROGRESSIVE:JPEG機能、0または1を有効にし、デフォルトはFalseです.IMWRITE_JPEG_OPTIMIZE:JPEG機能を有効にし、0または1、デフォルトはFalseです.IMWRITE_JPEG_RST_INTERVAL:JPEG再起動間隔、0-65535、デフォルトは0-再起動しません.IMWRITE_JPEG_LUMA_QUALITY:輝度品質別レベル、0-100、デフォルトは0-使用しません.IMWRITE_JPEG_CHROMA_QUALITY:独立した色度品質レベル、0-100、デフォルトは0-使用しません.IMWRITE_PNG_COMPRESSION:PNGの場合、0から9の圧縮レベルであってもよい.より高い値は、より小さなサイズとより長い圧縮時間を意味します.既定値は3です.IMWRITE_PNG_STRATEGY:cv::ImwritePNGFlagsの1つで、デフォルトはIMWRITE_PNG_STRATEGY_DEFAULT. IMWRITE_PNG_BILEVEL:バイナリレベルPNG、0または1、デフォルトは0です.IMWRITE_PXM_BINARY:PPM、PGMまたはPBMの場合、バイナリフォーマットフラグ、0または1であることができる.既定値は1です.
IMWRITE_WEBP_QUALITY:WEBPの場合、1から100までの品質(高ければ高いほど良い)です.既定では(パラメータは一切ありません)、質量が100を超える場合は無損圧縮が使用されます.
初心者は、この関数の3番目の変数を気にしなくてもいいです.
四、例
コードは次のとおりです.
import cv2
#
img = cv2.imread('russia2018.jpg')
#
cv2.namedWindow('image')
#
cv2.imshow('image',img)
# 2000ms=2s
cv2.waitKey(2000)
#
cv2.destroyAllWindows()
# png
cv2.imwrite('russia2018.png',img)
実験の結果,ウィンドウ表示画像がポップアップされ,2 s後にウィンドウが消失した.ウィンドウは次のとおりです.
五、進級
興味のある人は、グレースケール画像で画像を読み取り、ウィンドウのプロパティを変更したり、画像を異なる画像タイプのファイルに保存したりするなど、パラメータを変更することができます.また、matplotlibライブラリ(MatplotlibはPythonのグラフィックライブラリであり、様々な描画方法を提供している)に詳しい場合は、このライブラリを使用して画像を表示してみてください.この訓練によって関数に対する認識が深まる.