LoginSignup
13
22

More than 3 years have passed since last update.

Google Colaboratoryで簡単な画像処理してみました。

Posted at

はじめに

 この記事は、pythonましてやPCにすらあまり触ったことのない逆に珍しい高専生(編入学生)が、書いている内容の薄い記事です。他の方の記事を参考にさせていただいている点がかなり多いです。温かな目で見ていただけたら嬉しいです。

必要な環境

画像をアップロードして表示

 今回は任意の画像が使いやすいようにアップロードして処理することにします。files.upload()を使うことでアップロードすることができます。
コマンドを実行するとアップロードフォームが表示されるのでアップロードしてください。
その後ファイル名を取得しておきます。

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')

これでオリジナルの画像が表示されます。
スクリーンショット (3).png

色の反転

 色の反転は簡単で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')

実行結果
スクリーンショット (14).png

グレースケールへの変換と表示

 グレースケールへの変換は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')

実行結果
スクリーンショット (7).png

二値化

 最後に二値化です。二値化は先にグレースケールに変換してから、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)

実行結果

しきい値=128
スクリーンショット (9).png

しきい値=8
スクリーンショット (12).png

参考資料

13
22
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
13
22