@この記事は公開番号から来ています:csdn2299、公開番号プログラマアカデミーに注目したい
この記事は、OpenCV 2コンピュータビジョンアプリケーションプログラミングクックブックの最初の記事です。ノートでは、各章のコードはPython言語で書き直されます。
PythonOpenCVの設定はここでは紹介しません。
OpenCV for PythonがNumPyを介してバインドされていることに注意してください。そのため、NumPy関連の知識を習得する必要があります。
画像は行列です。OpenCVfor Pythonでは、画像はNumPy!の配列です。
画像を読みたい場合は、まずOpenCVパッケージをインポートする必要があります。メソッドは次のとおりです。
import cv2
画像を読み取って表示する
Pythonでは変数を宣言する必要がないため、C ++ではcv :: Mat xxxxxは必要ありません。このように:
img = cv2.imread("D:\cat.jpg")
OpenCVは現在、bmp、jpg、png、tiffなどの一般的な形式の読み取りをサポートしています。詳細については、OpenCVリファレンスドキュメントを参照してください。
次にウィンドウを作成します
cv2.namedWindow("Image")
次に、ウィンドウに画像を表示します
cv2.imshow("Image", img)
最後に、文を追加します。
cv2.waitKey (0)
最後の文を追加しない場合、IDLEの実行ウィンドウは直接応答しません。コマンドラインで実行すると、フラッシュになります。
完全な手順は次のとおりです。
import cv2
img = cv2.imread("D:\\cat.jpg")
cv2.namedWindow("Image")
cv2.imshow("Image", img)
cv2.waitKey (0)
cv2.destroyAllWindows()
ようやく窓を開けるのはいい癖です!
画像の作成/コピー
新しいOpenCVインターフェイスにはCreateImageインターフェイスはありません。cv2.CreateImageのような関数はありません。画像を作成する場合は、numpy関数を使用する必要があります(現在はOpenCV-Pythonバインディングを使用しているため、numpyが必要です)。次のように:
emptyImage = np.zeros(img.shape, np.uint8)
新しいOpenCV-Pythonバインディングでは、画像はNumPy配列の属性を使用して画像サイズとチャネル情報を表します。img.shapeを出力すると、(500、375、3)が得られます。OpenCVに付属するcat.jpgの例を次に示します。最後の3つは、これがRGBイメージであることを示します。
元の画像をコピーして新しい画像を取得することもできます。
emptyImage2 = img.copy();
問題を恐れていない場合は、cvtColorを使用して元の画像のコピーを取得することもできます。
emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#emptyImage3[...]=0
次のemptyImage3 […] = 0は、空白の黒い画像に変換します。
画像を保存
画像の保存は簡単です。cv2.imwriteを使用するだけです。
cv2.imwrite(“ D:\ cat2.jpg”、img)
最初のパラメーターは保存されたパスとファイル名で、2番目のパラメーターはイメージマトリックスです。このうち、imwrite()には、次のようなオプションの3番目のパラメーターがあります。
cv2.imwrite(“ D:\ cat2.jpg”、img、[int(cv2.IMWRITE_JPEG_QUALITY)、5])
3番目のパラメーターは特定の形式用です。JPEGの場合、これは画像の品質を表し、0〜100の整数で表されます。デフォルトは95です。cv2.IMWRITE_JPEG_QUALITYのタイプはLongであり、intに変換する必要があることに注意してください。以下は、異なる品質で保存された2つの画像です
。PNGの場合、3番目のパラメーターは圧縮レベルを示します。cv2.IMWRITE_PNG_COMPRESSION、0〜9、圧縮レベルが高いほど、画像サイズが小さくなります。デフォルトのレベルは3です。
cv2.imwrite("./cat.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
cv2.imwrite("./cat2.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
保存される画像のサイズは次のとおりです。
サポートされている画像もあり、通常はあまり使用されません。
完全なコードは次のとおりです。
import cv2
import numpy as np
img = cv2.imread("./cat.jpg")
emptyImage = np.zeros(img.shape, np.uint8)
emptyImage2 = img.copy()
emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#emptyImage3[...]=0
cv2.imshow("EmptyImage", emptyImage)
cv2.imshow("Image", img)
cv2.imshow("EmptyImage2", emptyImage2)
cv2.imshow("EmptyImage3", emptyImage3)
cv2.imwrite("./cat2.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 5])
cv2.imwrite("./cat3.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
cv2.imwrite("./cat.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
cv2.imwrite("./cat2.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
cv2.waitKey (0)
cv2.destroyAllWindows()
読んでいただきありがとうございます
。大学でpythonを学ぶことを選んだとき、コンピュータの基礎がおかしいことに気付きました。学業資格はあり
ませんでした。これは何もする必要はありません。それを補うことしかできません。道は、Pythonのコア知識を学び続け、コンピューターの基礎の詳細な研究を整理し、平凡になりたくない場合は、コーディングに参加して成長を続けてください!
実は、ここには技術だけでなく、それ以外のものもあり、例えば「絹糸」というよりも、どうやってプログラマーとして絶妙な存在になるのか、プログラマー自体が高貴な存在ですね。[参加するにはクリックしてください]自分らしくなりたい、高貴な人になりたい、是非!