2値画像の領域から面積などを求める
前準備
Python のインストール(Windows,Ubuntu 上)
Python 3.10 のインストール(Windows 上)
Pythonは,プログラミング言語の1つ.
【手順】
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- 次のコマンドを実行
次のコマンドは,Python ランチャーとPython 3.10をインストールする.
【関連する外部ページ】
- Python の公式ページ: https://www.python.org/
【サイト内の関連ページ】
【関連項目】 Python
- Windows での Python 3.10,関連パッケージ,Python 開発環境のインストール(winget を使用しないインストール): 別ページ »で説明
- Ubuntu では,システム Pythonを使うことができる.Python3 開発用ファイル,pip, setuptools のインストール: 別ページ »で説明
【サイト内の関連ページ】
- Python のまとめ: 別ページ »にまとめ
- Google Colaboratory の使い方など: 別ページ »で説明
【関連する外部ページ】 Python の公式ページ: https://www.python.org/
Ubuntu のシステム Python
Ubuntu では,システム Pythonを使用できる.Python 用 opencv-python, numpy のインストール
Windows でのインストール
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- インストールの実行
次のコマンドは,旧バージョンのものを削除し,Python 用 opencv-python のインストールを行う. 「python -c "import sys, cv2; print(f'Python version: {sys.version}\nOpenCV version: {cv2.__version__}')"」はインストールできたかの確認のため,バージョンを表示している.
python -m pip uninstall -y opencv-python python -m pip uninstall -y opencv-python-headless python -m pip uninstall -y opencv-contrib-python python -m pip install -U opencv-python opencv-contrib-python numpy python -c "import sys, cv2; print(f'Python version: {sys.version}\nOpenCV version: {cv2.__version__}')"
Ubuntu でのインストール
- インストールの実行
次のコマンドは,Python 用 opencv-python のインストールを行う. 「python3 -c "import sys, cv2; print(f'Python version: {sys.version}\nOpenCV version: {cv2.__version__}')"」はインストールできたかの確認のため,バージョンを表示している.
sudo apt install -y python3-opencv python3-numpy python3 -c "import sys, cv2; print(f'Python version: {sys.version}\nOpenCV version: {cv2.__version__}')"
画像ファイル fruits.jpg, home.jpg のダウンロード
画像ファイル fruits.jpg, home.jpg のダウンロードは, Windows でコマンドプロンプトを管理者として開き 次のコマンドを実行する.
mkdir c:\image
cd c:\image
curl -L https://github.com/opencv/opencv/blob/master/samples/data/fruits.jpg?raw=true -o fruits.jpg
curl -L https://github.com/opencv/opencv/blob/master/samples/data/home.jpg?raw=true -o home.jpg
上のコマンドがうまく
https://github.com/opencv/opencv/tree/master/samples/data
で公開されている fruits.jpg, home.jpg を使用する(謝辞:画像の作者に感謝します)
Python プログラムの実行
Python 開発環境(Jupyter Qt Console,
Jupyter ノートブック (Jupyter Notebook),
Jupyter Lab,
Nteract,
Spyder,
PyCharm,
PyScripterなど)も便利である.
Python のまとめ: 別ページ »にまとめ
画像が表示されるので確認.
このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる
引き続き次を実行
ヒストグラム平坦化
python
import os
import numpy as np
import cv2
IMROOT=os.environ['LOCALAPPDATA'] + '/'
KERNSIZE=10
bgr = cv2.imread(IMROOT + "fruits.jpg")
mono = cv2.cvtColor(bgr, cv2.COLOR_BGR2GRAY)
r, dst = cv2.threshold(mono, 0, 255, cv2.THRESH_OTSU)
kernel = np.ones((KERNSIZE, KERNSIZE), np.uint8)
opening = cv2.morphologyEx(dst, cv2.MORPH_OPEN, kernel)
cv2.imshow("opening", opening)
edges, contours, hierarchy = cv2.findContours(opening, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.imshow("edges", edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
print( cv2.contourArea(contours[0]) )
x,y,w,h = cv2.boundingRect(contours[0])
aspect_ratio = float(w)/h
print( aspect_ratio )
(x,y),(MA,ma),angle = cv2.fitEllipse(contours[0])
print( angle )