|
Before Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 586 KiB |
|
Before Width: | Height: | Size: 333 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 482 KiB |
|
Before Width: | Height: | Size: 363 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 12 KiB |
@ -1,45 +1,28 @@ |
||||
# 実験課題7 |
||||
# 3.7 膨張・収縮(白黒の2値画像に対する処理へ修正版) |
||||
# 3.7 膨張・収縮 |
||||
|
||||
import cv2 |
||||
import numpy as np |
||||
|
||||
# 画像の読み込み |
||||
image_path = 'person.jpg' |
||||
img = cv2.imread(image_path) |
||||
|
||||
if img is None: |
||||
print("画像を読み込めませんでした。ファイルパスを確認してください。") |
||||
else: |
||||
# 3.6の処理:HSV変換 |
||||
if img is not None: |
||||
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) |
||||
|
||||
# 肌色の範囲を指定 |
||||
lower_skin = np.array([0, 20, 70]) |
||||
upper_skin = np.array([20, 255, 255]) |
||||
|
||||
# inRangeで作成されるこの画像が、対象が白(255)で背景が黒(0)の「2値画像(白黒画像)」です |
||||
# 2値画像(白黒画像)を作成 |
||||
mask_img = cv2.inRange(hsv_img, lower_skin, upper_skin) |
||||
|
||||
# --- 膨張・収縮のための構造要素(カーネル)の定義 --- |
||||
kernel = np.ones((3, 3), np.uint8) |
||||
kernel = np.ones((5, 5), np.uint8) |
||||
|
||||
# --- ① 収縮 3回 → 膨張 3回(オープニング処理) --- |
||||
# 処理の対象を mask_img(白黒画像) に変更 |
||||
# オープニング処理 (収縮 -> 膨張) [Erode to Dilate] |
||||
eroded_first = cv2.erode(mask_img, kernel, iterations=3) |
||||
seq_opening = cv2.dilate(eroded_first, kernel, iterations=3) |
||||
cv2.imwrite('3_7_e2d.jpg', seq_opening) |
||||
|
||||
# --- ② 膨張 3回 → 収縮 3回(クロージング処理) --- |
||||
# 処理の対象を mask_img(白黒画像) に変更 |
||||
# クロージング処理 (膨張 -> 収縮) [Dilate to Erode] |
||||
dilated_first = cv2.dilate(mask_img, kernel, iterations=3) |
||||
seq_closing = cv2.erode(dilated_first, kernel, iterations=3) |
||||
|
||||
# --- 結果の表示 --- |
||||
# 白黒のマスク画像がどのように変化するかを確認します |
||||
cv2.imshow('1. Original Mask (Black & White)', mask_img) |
||||
cv2.imshow('2. Erode 3 -> Dilate 3', seq_opening) |
||||
cv2.imshow('3. Dilate 3 -> Erode 3', seq_closing) |
||||
|
||||
# キー入力待ち |
||||
cv2.waitKey(0) |
||||
cv2.destroyAllWindows() |
||||
cv2.imwrite('3_7_d2e.jpg', seq_closing) |
||||