画像を分割して分割した画像ごとの赤色の面積を求めたい Python
画像を9分割して、それぞれの画像について赤色の面積を求めたいです。
頑張ってみましたが下のコードを動かすと9個分同じ値がでてしまいます。
9個分割したうちの値が大きいものを見つけたいのですがどうしたらいいでしょうか...。
赤のHSVの範囲も自信がありません
よろしくお願いします。
import numpy as np
import cv2
import glob
import os
os.chdir("./test")
image = []
image = glob.glob('*.png')
print(image)
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(img, cv2.COLOR_BGR2HSV)
# 赤色のHSV範囲
hsv_min = np.array([0, 0, 100])
hsv_max = np.array([255, 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)