はじめに
この記事は、pythonましてやPCにすらあまり触ったことのない逆に珍しい高専生(編入学生)が、書いている内容の薄い記事です。他の方の記事を参考にさせていただいている点がかなり多いです。温かな目で見ていただけたら嬉しいです。
#必要な環境
- google colaboratory
- OpenCV
#画像をアップロードして表示
今回は任意の画像が使いやすいようにアップロードして処理することにします。files.upload()
を使うことでアップロードすることができます。
コマンドを実行するとアップロードフォームが表示されるのでアップロードしてください。
その後ファイル名を取得しておきます。
from google.colab import files
uploaded_file = files.upload()
img = next(iter(uploaded_file))
#画像表示
##オリジナルの表示
OpenCVを使って画像を読み込みますが、OpenCVでの画像の色はRGBではなくBGRで扱われているため、一般的なRGBに変換します。その後、matplotlib
を使って画像を表示します。
import cv2
from matplotlib import pyplot as plt
img2 = cv2.imread(img)
#RGB変換
src = cv2.cvtColor(img2,cv2.COLOR_BGR2RGB)
#画像の表示
plt.imshow(src)
#値の非表示
plt.axis('off')
##色の反転
色の反転は簡単でsrc = 255 - src
を入れるだけです。これは元の色の値を白(255)から引くことによって値が反転する事を利用しています。
import cv2
from matplotlib import pyplot as plt
img2 = cv2.imread(img)
src = cv2.cvtColor(img2,cv2.COLOR_BGR2RGB)
#反転
src = 255 - src
plt.imshow(src)
plt.axis('off')
##グレースケールへの変換と表示
グレースケールへの変換はcv2.cvtColor(pixels, cv2.COLOR_BGR2GR)
で変換できます。
オリジナルと違う点はそこだけです。
import numpy as np
pixels = np.array(src)
import matplotlib.pyplot as plt
#グレースケールに変換
img_gray = cv2.cvtColor(pixels, cv2.COLOR_BGR2GRAY)
plt.imshow(img_gray)
plt.axis('off')
##二値化
最後に二値化です。二値化は先にグレースケールに変換してから、 cv2.threshold(img_gray,128, 255, cv2.THRESH_BINARY
で二値化します。128の部分はしきい値と言い、ここの値より明るい数値は白(255)に、暗い数値は黒(0)になります。しきい値の値が二値化するにあたって重要になってきます。
import numpy as np
pixels = np.array(src)
import matplotlib.pyplot as plt]
#グレースケールへ変換
img_gray = cv2.cvtColor(pixels, cv2.COLOR_BGR2GRAY)
#二値化
retval, img_binary = cv2.threshold(img_gray,128, 255, cv2.THRESH_BINARY)
plt.imshow(img_binary)
実行結果
#参考資料