0
1

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 5 years have passed since last update.

日々の進捗ノート_画像処理100本ノックまとめ

Last updated at Posted at 2019-07-04

画像処理100本ノックというのをやろうと思います.

目次

Q.1. チャネル入れ替え
Q.2. グレースケール化

Q.1. チャネル入れ替え

画像を読み込み、RGBをBGRの順に入れ替えよ。
imori.jpg

gazo01.py
import cv2
import numpy as numpy
img = cv2.imread("files/imori.jpg")

r = img[:, :, 2].copy()
b = img[:, :, 0].copy()

img[:, :, 0] = r
img[:, :, 2] = b

cv2.imwrite("newimori.jpg", img)

結果

newimori.jpg

備忘録

・cv2.imreadで読み込むとRGBはBGRの順で出力される
・numpy.ndarrayを取り扱うときは参照渡しに注意 最初.copy()をつけずにやってミスをした

Q.2. グレースケール化

画像をグレースケールにせよ。 グレースケールとは、画像の輝度表現方法の一種であり下式で計算される。

Y = 0.2126 R + 0.7152 G + 0.0722 B
imori.jpg

gazo02.py
import cv2
import numpy as np

img = cv2.imread("files/imori.jpg")
img = img * [0.0722, 0.7152, 0.2126]
img = img.sum(axis=2)

cv2.imwrite("newimori2.jpg", img)

結果

newimori2.jpg

備忘録

・グレースケールの場合各ピクセルに格納されている値はYひとつのみ

Q.3. 二値化

画像を二値化せよ。 二値化とは、画像を黒と白の二値で表現する方法である。 ここでは、グレースケールにおいて閾値を128に設定し、下式で二値化する。

y = { 0 (if y < 128) 255 (else)

imori.jpg

gazo03.py
import cv2
import numpy as np

img = cv2.imread("newimori2.jpg")
img = np.where(img <128, 0, 255)

cv2.imwrite("newimori3.jpg", img)

結果

newimori3.jpg

備忘録

・まあいいかなと思って2問目で作ったグレースケールの画像をもとにしました
・if は np.where

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?