import cv2
# 画像を読み込む
image = cv2.imread('source.jpg')
# アスペクト比を保ったまま横幅が800ピクセルになるようにリサイズ
height, width = image.shape[:2]
aspect_ratio = width / height
image = cv2.resize(image, (800, int(800 / aspect_ratio)))
# 画像をグレースケール化する
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 画像を保存する
cv2.imwrite('1.png', image)
1
import cv2
# 画像を読み込む
image = cv2.imread('1.png')
# サイズを取得する
height, width = image.shape[:2]
# 画像を二値化する
_, image50 = cv2.threshold(image, 50, 255, cv2.THRESH_BINARY)
_, image100 = cv2.threshold(image, 100, 255, cv2.THRESH_BINARY)
_, image150 = cv2.threshold(image, 150, 255, cv2.THRESH_BINARY)
# 画像を保存する
cv2.imwrite('2_50.png', image50)
cv2.imwrite('2_100.png', image100)
cv2.imwrite('2_150.png', image150)
2_50

2_100

2_150
import cv2
import random
# 画像を読み込む
image = cv2.imread('1.png')
# サイズを取得する
height, width = image.shape[:2]
# すべてのピクセルについての繰り返し
for y in range(height):
for x in range(width):
# 閾値をランダムに決める
threshold = random.randint(0, 255)
# 閾値を超えたら白にする
if image[y, x][0] > threshold:
image[y, x] = [255, 255, 255]
# 閾値を超えなかったら黒にする
else:
image[y, x] = [0, 0, 0]
# 画像を保存する
cv2.imwrite('3.png', image)
3
import cv2
import random # この行は削除してもよい
# 画像を読み込む
image = cv2.imread('1.png')
# サイズを取得する
height, width = image.shape[:2]
# Bayer型マスク
mask = [[0, 8, 2, 10],
[12, 4, 14, 6],
[3, 11, 1, 9],
[15, 7, 13, 5]]
# すべてのピクセルについての繰り返し
for y in range(height):
for x in range(width):
# マスクに応じて閾値を決める
threshold = mask[y % 4][x % 4] * 16 + 8
# 閾値を超えたら白にする
if image[y, x][0] > threshold:
image[y, x] = [255, 255, 255]
# 閾値を超えなかったら黒にする
else:
image[y, x] = [0, 0, 0]
# 画像を保存する
cv2.imwrite('4.png', image)
4