分割した画像に枠線をつけたい
画像を分割して赤の割合が多い分割エリアを枠で囲みたいのですがどうにもできません
各分割エリアの赤の割合まではだせるようになったのですが、、、。
いい方法をご存じの方教えてくださいm(__)m
例えば、リンゴの画像を9分割したとき真ん中のエリアが一番赤の割合が多いので枠で囲む、みたいなことがしたいです
import numpy as np
import cv2
import glob
import os
os.chdir("./test")
image = []
image = glob.glob('*.bmp')
print(image)
try:
os.makedirs(".././test_result")
except FileExistsError:
pass
def split_imgs(img, hsplits=3, vsplits=3):
h, w = img.shape[:2]
crop_img = img[: h // vsplits * vsplits, : w // hsplits * hsplits]
return np.array(
[x for h_img in np.vsplit(crop_img, vsplits) for x in np.hsplit(h_img, hsplits)]
)
for i in image:
img = cv2.imread(i)
hsplits = 3 # 横方向の分割数
vsplits = 3 # 縦方向の分割数
sub_imgs = split_imgs(img, hsplits, vsplits)
print(sub_imgs.shape) # (9, 140, 186, 3)
for ch in sub_imgs:
# HSV 色空間に変換する。
hsv = cv2.cvtColor(ch, cv2.COLOR_BGR2HSV)
# 赤色のHSV範囲
hsv_min = np.array([0, 64, 0])
hsv_max = np.array([30, 255, 255])
mask = cv2.inRange(hsv, hsv_min, hsv_max)
m = cv2.countNonZero(mask)
h, w = mask.shape
per = round(100*float(m)/(w * h),1)
print("Moment[px]:",m)
print("Percent[%]:", per)