0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【文字検出_備忘録】OpenCV X Python グレースケール画像の2値化

Posted at

こんにちは。続きをやりましょう。

グレースケール化の確認

グレースケール化までやったのでそれができてるかの確認をします。
せっかくなので、ndarrayの出力も試したいなと思って、以下のコードを書きました。

for y_num in range(0,5):
	for x_num in range(0,5):
			print("print["+str(y_num)+"]"+"["+str(x_num)+"]:"+str(img_gray[y_num][x_num]))

img_gray[y_num][x_num]の部分で、画素値の出力をしてます。
実行結果。

print[0][0]:251
print[0][1]:251
print[0][2]:251
print[0][3]:251
print[0][4]:251
print[1][0]:251
print[1][1]:251
print[1][2]:251
print[1][3]:251
print[1][4]:251
print[2][0]:251
print[2][1]:251
print[2][2]:251
print[2][3]:251
print[2][4]:251
print[3][0]:251
...

しっかり入ってますね。
では早速、これのヒストグラムでも書いてみましょう。

#ヒストグラム
fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist(img_gray)
plt.show()

参考:ヒストグラムの出し方

参考:plot関数について

出てきました。Histogram.png

多分、この一番右の多い群が白色かなぁとか思ったり。
大津の2値化を使って、やってみましょう。

2値化

#大津の2値化をって、閾値を求める+2値化
th, img_gray_th_otsu = cv2.threshold(img_gray,0,255,cv2.THRESH_OTSU)


#画像出力
plt.imshow(img_gray_th_otsu)
plt.gray()
plt.show()

thに閾値、img_gray_th_otsuに2値化後の画素値が入ります。
cv2.thresholdの引数、threshにはいったん0を入れてます。これが大津法によって最適化されてthに入ると考えてます。Maxは255にしときました。maxの画素値を入れてもいいですが、そこまでする必要はないかなと思いました。

cv2.thresholdの定義

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?