Python の CV2 のコンテキストでは、画像を読み取ると、画像の色と明るさを示す uint8 値を持つ Y 座標と X 座標の 2D または 3D 配列として保存されます。 uint8 という用語は、0 ~ 255 の範囲の 8 ビット符号なし整数データ型を指します。これは、赤、緑、青 (RGB) の 3 つのチャネルと組み合わされて、カラー イメージを形成します。
通常の配列のように画像の一部を変更し始めると (例: 3 で割るなど)、この形式が失われる可能性があります。たとえば、ピクセル値が 0 ~ 255 の範囲外になると、画像が使用できなくなる場合があります。画像を正しく操作するには、この構造を理解することが重要です。
CV2 Python ライブラリでは、次のコード スニペットを使用して画像を簡単に表示できます。
#pip install opencv-python # if not already installed import cv2 # Load an image image = cv2.imread('./test.png') # Display the image in a window cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows()
上記のコードは、コンピューター上に画像を表示するポップアップ ウィンドウを開きます。独自の画像に URL を追加してテストしてください。 その後、ズームインして、画像のピクセルレベルの RGB 値を観察できます。この基本機能は、画像処理を検討するための優れた出発点です。
数学的には、明るさとコントラストは次の式を使用して調整できます。
new_image=コントラスト×画像の明るさ
OpenCV の cv2.convertScaleAbs() 関数は、このプロセスを自動化します。ピクセル値が 0 ~ 255 の範囲内に収まるように、上記の式を適用します。
その仕組みは次のとおりです:
使用例:
new_image = cv2.convertScaleAbs(画像、アルファ=コントラスト、ベータ=明るさ)
これにより、ピクセル値を手動でクリップすることなく、明るさとコントラストを簡単に変更できます。
image = cv2.imread('./test.png') cv2.namedWindow('Adjustments') contrast=0.8 brightness=89 image=cv2.convertScaleAbs(image, alpha=contrast, beta=brightness) cv2.imshow('Adjustments', image) cv2.waitKey(0) cv2.destroyAllWindows()
一度限りの調整は便利ですが、ほとんどの場合、明るさとコントラストをインタラクティブに調整したいと考えます。 OpenCV では、トラックバーを使用してこれを実現できます。
トラックバーは cv2.createTrackbar() で作成でき、値を動的に調整できます。一般的な構文は次のとおりです:
cv2.createTrackbar(トラックバー名, winname, 値, カウント, onChange_function)
これらのトラックバーは、onChange_function で次のように呼び出すことができます;
cv2.getTrackbarPos(トラックバー名, Win名)
・trackbarname: トラックバーの名前
・ winname: トラックバーが表示される OpenCV ウィンドウの名前。
明るさとコントラストの両方を調整するには、2 つのトラックバーが必要です。
#pip install opencv-python # if not already installed import cv2 # Load an image image = cv2.imread('./test.png') # Display the image in a window cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows()
コントラストと明るさのスライダーを調整すると、on_change 関数がトリガーされ、cv2.getTrackbarPos() を使用してトラックバーから値を読み取ります。これらの値は、cv2.convertScaleAbs 関数を使用して画像に適用され、更新された画像がリアルタイムで表示されます。
アプリをよりユーザーフレンドリーにするために、ユーザーが x キーを押して終了できるようにする簡単なスニペットを最後に追加しました。これにより、ウィンドウを閉じてもコードの実行が必ずしも停止するとは限らないという OpenCV の一般的な問題が解決されます。これを実装することで、アプリはプロセスを長引かせることなく確実に終了します。
以上がCV画像とは、画像の明るさとコントラストを調整してみようの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。