画像読取cv2.imread()関数
OpenCVの画像が依存読み取るcv2.imread()
機能、cv2.imread()
関数プロトタイプであるMat imread( const string& filename, int flags=1 )
場合、Mat
データの行列を考慮画像によって格納されたOpenCVのでクラスとして定義されている最も重要なOpenCVのデータ構造です。クラスとしては、属性データのデータ画像マトリクス、寸法DIMS画像マトリックス(例えば、32×32の画像寸法2)、及び他の画像データ行列の行、マット構造の詳細な説明が含まれ、参照ができるOpenCVのマットは、以下の構造を詳細。ことに留意すべきであるとき動作して画像を正規大きな利便性を提供して多次元配列、私たちはOpenCVのを使用するためのフレームワークを学習深さで画像を保存する-関数が直接OpenCVのnumpyのデータ型を処理することができ、私は推測しているためマットと多次元アレイは、マトリックスデータを表すことができます。画像の二つのパラメータ、最初のファイル名(インデックスアドレス)を有し、第二の引数指定がどのような形式の読取画像、次のような状況で、その値: (1 )、デフォルトである選択された表現、すなわち、読み取った画像フォーマット方法を保持する原稿を使用して、モード。例えば、読み取られる原画像は、グレースケール画像であり、グレースケール画像が読み取られます。 (2) 、これは、選択された代表モード、グレースケール画像形式に、すなわち、読み取った画像を。どのようなオリジナル画像の元の形式に関係なく、結果のすべてを読んだ後、グレースケール画像に変換されます。 (3) 、これは、選択された代表モード、BGR形式で、即ち、読取画像を。どのようなオリジナル画像の元の形式に関係なく、結果のすべてを読んだ後、3チャンネルの画像BGR形式に変換されます。特に注目すべきは、次のとおりです。cv2.imread()
flags
flags=1
CV_LOAD_IMAGE_UNCHANGED
flags=2
CV_LOAD_IMAGE_GRAYSCALE
flags=3
CV_LOAD_IMAGE_COLOR
cv2.imread()
RGBの画像読取機能、チャンネルによって返された画像フォーマットがされていない場合にはR、G、B
配置され、しかしによってB、G、R
のため!もちろん、あなたが使用している場合はcv2.imread()
RGBの画像を読み取るために、だけでなく、cv2.imshowで()イメージではなく、問題を表示します。しかし、あなたが使用している場合はcv2.imread()
RGBの画像を読み、その後、他のライブラリの表示方法を、それは非常に可能性の高い問題が発生している、参照matplotlibの&visdom画像表示の問題を。
次のように使用例は以下のとおりです。
image = cv2.imread('D:\\code\\datasets\\facades\\train\\714.jpg', flags=1)
- 1
ハング関数imread
- 画像ファイル名は、インデックスアドレスに任意の漢字を表示することはできません
- Windowsシステム場合は、ファイル名の区切りインデックスアドレスは必要
“\\”
だけではない“\”
、それは対処しなければならないとして、D:\\code\\datasets\\facades\\train\\714.jpg
代わりにD:\code\datasets\facades\train\714.jpg
。これは、次のような、エスケープ文字のファイルアドレスとの混同を避けるためである\train中的\t
エスケープ文字としてシステムのデフォルト。 - 読み取った画像場合
numpy.asarray()
、すなわち、多次元配列型に変換に変換後の形状のアレイを[Height, Width, Channels]
、かつTensorflow
テンソルモデル入力の所望の形状は[B,H,W,C]
非常に一貫している、しかしためPyTorch
の目的、それは望ましい形状モデルでは、入力テンソルであります[B, C, H, W]
、あなたはする必要がChannel
移転する前の寸法。
画像表示cv2.imshow()関数
OpenCVの-Pythonの画像表示装置は、一般的に使用されるcv2.imshow()
から成る機能、二つのパラメータであり、画像表示ウィンドウの名前を他のであり、データのマット型、次の例を使用します。
image = cv2.imread('D:\\code\\datasets\\facades\\train\\714.jpg', flags=1)
cv2.imshow('Example',image)
cv2.waitKey(0)
- 1
- 2
- 3
ハングimshowは機能
- 次の2つのパラメータ、すなわち持っている必要があります省略することができないパラメータ最初のウィンドウ名表示を
- 一般的にバックを追加する必要があり
cv2.waitKey(0)
、次のステップは、手動で決定によって表される、または表示つかの間のイメージが応答しないか、画像が表示されますが表示されます。 - 特に注目すべきは、異なるフォーマットの画像データのことである
imshow()
自動、細部の関数異なる正規化操作が、参照OpenCVの詳細関数imshow機能。以下のために、ことに留意してください画像の点で階調値(一般に、深さニューラルネットワークの結果から得られた)された32ビット浮動小数点型、imshow()
機能があろう自動的に各画素値が255で乗算され、その後、表示され、すなわち、原図の画素値は範囲[0,1]
マップに[0,255]
このよう注:所望のニューラルネットワークの出力表示画像マトリクスはに正規化されなければならない[0,1]
正規化邪魔することなく、[0,255]
表示再び。 - ピットがあり、あなたが使用している場合は
cv2.imread()
RGBの画像を読み、その後、他のライブラリの表示方法、それは非常に画像と元の画像の色が完全に矛盾して表示されることがありますです!これは、あるcv2.imread()
とき、RGB画像読取機能、リターンチャネルは画像フォーマットをベースにしていないR、G、B
配置された、しかしでB、G、R
のオーダー!例は、を指すことができる画像表示matplotlibの&visdomの問題も期間与えられ、ここで与えられた図の実施形態B、G、R
順序変換R、G、B
シーケンスコード:
b,g,r=cv2.split(image)
image=cv2.merge([r,g,b])
- 1
- 2
読むと、表示画像の一般的なエラープロンプト
- cv2.error:OpenCVの(4.1.0)C: \プロジェクト\ OpenCVの-Pythonの\ OpenCVの\モジュール\のHighGUI \ SRC \ window.cpp:352:エラー:(-215:アサーションが失敗した)size.width> 0 &&サイズ。 高さ>の関数で0「のcv ::関数imshow」:
このエラーは次の2つの理由が含ま:1を、パス漢字がある; 2、使用されるパス\
エスケープ文字と間違われるためには、 - :つかの間の画像、または画像は、に応じて、表示されません。
cv2.imshow()
追加した後、cv2.waitKey(0)
- そのような異常な状態を経て黒または白の画像表示が原因になる可能性がある場合
cv2.imshow()
の結果を自動的に正規化、その後に具体的に参照するために必要なことのできる処理OpenCVの関数の詳細関数imshow
画像cv2.imwrite保存()関数
opencv_pythonを使用cv2.imwrite()
した画像を保存するための機能を、その使用は例です:
img = cv2.imread("D:\\code\\datasets\\facades\\train\\716.jpg")
img = np.asarray(img).astype(float)
cv2.imwrite('D:\\code\\1.png',img)
- 1
- 2
- 3
cv2.imwrite()
関数の最初のパラメータが'D:\\code\\1.png'
あり、所望の画像記憶ファイル名、アドレス、ファイル名の拡張子の形式であってもよい.jpg
か、.png
のような、第2のパラメータimg
の代表的な格納される画像データ、又はNdarrayのnumpyのマット型であってもよいです(多次元配列)、変換の量をフレームワークを学習シート深さで使用されるようにするので好都合であるnumpyのタイプに変換するサンプルコードで。
ハング関数imwrite機能
cv2.imwrite()関数は、それが画像ピクセルのグレー値のダイナミックレンジのイメージ保存する必要ピットことで[0,255]
、既に上述したが、このような画像のグレー値のダイナミックレンジを生成GANとしてニューラルネットワークの出力画像は、通常[-1,1]
、 32ビット・データ・フォーマットのためされるcv2.imshow()
機能のために、ダイナミックレンジによって必要とされるcv2.normalize()
ために変換関数[0,1]
正しい表示(注文cv2.imshow()
機能自動処理)、そしてためにcv2.imwrite()
機能の目的は、そのダイナミックレンジを変更するために必要な[0,255]
、適切に保存するために。
必要性は[0,1]のダイナミックレンジのグレースケール値に調整されるように、同様にあなたがOpenCVの、必要なダイナミック階調値で画像を保存したい場合は、画像は、OpenCVの表示された場合要約すると、ネットワークは、奥行き画像学習を生成し、範囲[0,255]に調整しました。