トップページ -> 最新情報技術の実習と研究ツール -> OpenCV を使ってみる -> Python + OpenCV で濃淡画像を使う
[サイトマップへ]  

Python + OpenCV で濃淡画像を使う

カラー画像の濃淡画像への変換,

キーワード: OpenCV, Python


前準備

前準備として,Anaconda のインストールが終わっていること. 手順を下に説明しています.

Anaconda のインストール

Python 3 の開発環境である Anacondaをおすすめ.Window でのインストール手順は次の通りです(Linuxでも同様の手順です).

  1. https://www.continuum.io/downloads#windowsを開く

  2. Download」をクリックする.

  3. ダウンロードが始まるので確認する.

  4. ダウンロードした .exe ファイルを実行して,Anacondaをインストール.

    Python処理系にはいくつかの種類がある. この Web ページでは Anaconda をおすすめしている. 以下,Windows に Anacondaをインストールしたものとして説明を続ける.

  5. Windows では,コマンドプロンプトを管理者として実行

  6. まずは,最新の conda-build パッケージが欲しい.今のコマンドプロンプトで,次のコマンドを実行

    conda install -y conda-build
    

    ※ 「Proceed ([y]/n)?」と表示されたら, y + Enter で続行する.「反応が遅いなあ」と思ったら、Enter キーを押してみる.

  7. conda が更新されたので,コマンドプロンプトをいったん閉じる

  8. 再び,コマンドプロンプトを管理者として実行

  9. コマンドプロンプトで,次のコマンドを実行

    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    conda update -y setuptools
    conda update -y conda
    conda update -y conda-build
    

    ※ 「Proceed ([y]/n)?」と表示されたら, y + Enter で続行する.「反応が遅いなあ」と思ったら、Enter キーを押してみる.

    ※「wget が無いよ!」というときは、msys2 を次のWebページの手順でインストール. (wget 単独でのインストールではなく,msys2が動くように設定しておくのが便利)

    https://www.kunihikokaneko.com/dblab/toolchain/msys2.html

OpenCV パッケージのインストール

  1. Windows で,コマンドプロンプトを管理者として実行

    ※ Linux の場合には,端末を開く(pyenvを使っているときは pip の実行に管理者権限を必要としない)

  2. 今のコマンドプロンプトで,次のコマンドを実行

    ※ Anaconda や Miniconda を使っていないときは conda コマンドがないので pip コマンドを使ってください

    conda install -y opencv 
    

    ※ 「Proceed ([y]/n)?」のように表示されたときは y, Enter キー


プログラム例

https://github.com/opencv/opencv/tree/master/samples/data で公開されている fruits.jpg を使うことにします (感謝)

  1. 次の Web ページを開く

    https://github.com/opencv/opencv/tree/master/samples/data

  2. fruits.jpg と home.jpg を選ぶ

  3. クリックしたら、ダウンロード画面に変わるので「Download」をクリック.

Python + OpenCV プログラム例(濃淡画像の場合)

カラー画像から濃淡画像への変換

Python 処理系」で次を実行. (Anacondaに入っている開発環境 spyder を実行し,左上の エディタ画面を使うのが簡単.編集が終わったら「実行ボタン」をクリック.

import cv2
img = cv2.imread("D:/fruits.jpg")
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("hoge", mono)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

別の画像で試す

import cv2
img = cv2.imread("D:/home.jpg")
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("hoge", mono)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

ヒストグラム平坦化 (histogram equalization)

Python 処理系」で次を実行. (Anacondaに入っている開発環境 spyder を実行し,左上の エディタ画面を使うのが簡単.編集が終わったら「実行ボタン」をクリック.

import cv2
img = cv2.imread("D:/fruits.jpg")
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
equ = cv2.equalizeHist(mono)
cv2.imshow("hoge", equ)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

別の画像で試す

import cv2
img = cv2.imread("D:/home.jpg")
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
equ = cv2.equalizeHist(mono)
cv2.imshow("hoge", equ)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

CLAHE (Contrast Limited Adaptive Histogram Equalization) によるヒストグラム平坦化

Python 処理系」で次を実行. (Anacondaに入っている開発環境 spyder を実行し,左上の エディタ画面を使うのが簡単.編集が終わったら「実行ボタン」をクリック.

import cv2
img = cv2.imread("D:/fruits.jpg")
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
equ = clahe.apply(mono)
cv2.imshow("hoge", equ)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

別の画像で試す

import cv2
img = cv2.imread("D:/home.jpg")
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
equ = clahe.apply(mono)
cv2.imshow("hoge", equ)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

濃淡画像のノイズ除去

Python 処理系」で次を実行. (Anacondaに入っている開発環境 spyder を実行し,左上の エディタ画面を使うのが簡単.編集が終わったら「実行ボタン」をクリック.

カラー画像に対しては,「cv2.fastNlMeansDenoisingColored」を使う. ビデオの場合には 「cv2.fastNlMeansDenoisingMulti」を使う.

import cv2
img = cv2.imread("D:/fruits.jpg")
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = cv2.fastNlMeansDenoising(mono) 
cv2.imshow("hoge", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

別の画像で試す

import cv2
img = cv2.imread("D:/home.jpg")
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
dst = cv2.fastNlMeansDenoising(mono) 
cv2.imshow("hoge", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

to be done

pybm3d, contour