0
0

今回は前回記載した大津の2値化をPythonでプログラム作成します。

Pythonでのプログラミング

import cv2
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib

# 画像を読み込む(ここでは適切なパスを指定してください)
image = cv2.imread('hoge.jpg', cv2.IMREAD_GRAYSCALE)

# 大津の二値化を適用する
_, binary_image = cv2.threshold(image, 0, 255, cv2.THRESH_OTSU)

# ヒストグラムを計算
hist_original = cv2.calcHist([image], [0], None, [256], [0, 256])
hist_binary = cv2.calcHist([binary_image], [0], None, [256], [0, 256])

# ヒストグラムを表示
plt.figure(figsize=(12, 7))
plt.subplot(121)
plt.plot(hist_original, color='blue')
plt.title('元画像のヒストグラム')
plt.xlabel('ピクセル値')
plt.ylabel('頻度')
plt.grid()

plt.subplot(122)
plt.plot(hist_binary, color='blue')
plt.axvline(x=_, color='red', linestyle='--', label=f'大津の2値化での閾値 ({_:.2f})')
plt.title('大津の2値化後の画像のヒストグラム')
plt.xlabel('ピクセル値')
plt.ylabel('頻度')
plt.legend()
plt.grid()
plt.tight_layout()
plt.show()

上記のようなプログラムを実行すると、元の画像のヒストグラムが左図で、大津の2値化で2値化した結果のヒストグラムは右図です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0