Learn More →
yolo取番茄->圖去背->計算像素比->模糊規則->結果上傳
yolov5結果取圖
Caution
–resize大小
–路徑位置
–方框遮擋圖片 解決辦法
2023/2/22更
YoloV5中 detect.py參數中的–save_crops就有裁切功能✔️
1.Resizing Images✔️
re-sized all images to 250 × 250
2.Background Removal
2023/02/25
處理辦法:
背景去除算法
API去背(花錢)
重新label圖片訓練新模型
2023/3/9 今日進度:label到134
labelme使用
2023/5/2 放棄重新label,跳過此階段
3.Convert RGB to HSV color space
4.Extract(H,S,V) Compoents
提取個顏色與原圖像素比
Learn More →
Learn More →
Learn More →
4 channel green,yellow,orange,red
4 degree xs,s,m,l
if rule 256 判別成熟度
4 result
(2023/5/2)程式:
import cv2
import numpy as np
import os
def ripeness_judgement(input_folder):
for filename in os.listdir(input_folder):
if filename.endswith(".jpg") or filename.endswith(".jpeg") or filename.endswith(".png"):
# 讀入圖片
img = cv2.imread(os.path.join(input_folder, filename))
# 轉換成 HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定義綠、黃、橘、紅的顏色範圍 (HSV)
lower_green = np.array([35, 43, 46])
upper_green = np.array([77, 255, 255])
lower_yellow = np.array([26, 43, 46])
upper_yellow = np.array([34, 255, 255])
lower_orange = np.array([11, 43, 46])
upper_orange = np.array([25, 255, 255])
lower_red = np.array([0, 43, 46])
upper_red = np.array([10, 255, 255])
# 進行色度分割
mask_green = cv2.inRange(hsv, lower_green, upper_green)
mask_yellow = cv2.inRange(hsv, lower_yellow, upper_yellow)
mask_orange = cv2.inRange(hsv, lower_orange, upper_orange)
mask_red = cv2.inRange(hsv, lower_red, upper_red)
# 取得各個顏色部分的圖像
green_part = cv2.bitwise_and(img, img, mask=mask_green)
yellow_part = cv2.bitwise_and(img, img, mask=mask_yellow)
orange_part = cv2.bitwise_and(img, img, mask=mask_orange)
red_part = cv2.bitwise_and(img, img, mask=mask_red)
# 計算像素與去除綠色圖比例
total_pixels = np.count_nonzero(img)
green_pixels = cv2.countNonZero(mask_green)
yellow_pixels = cv2.countNonZero(mask_yellow)
orange_pixels = cv2.countNonZero(mask_orange)
red_pixels = cv2.countNonZero(mask_red)
green_ratio = green_pixels / total_pixels
yellow_ratio = yellow_pixels / total_pixels
orange_ratio = orange_pixels / total_pixels
red_ratio = red_pixels / total_pixels
print("{}\n".format(filename))
print("Green_ratio", green_ratio)
print("Yellow ratio:", yellow_ratio)
print("Orange ratio:", orange_ratio)
print("Red ratio:", red_ratio,"\n")
# 放大圖片
scale = 5
img = cv2.resize(img, (img.shape[1] * scale, img.shape[0] * scale))
green_part = cv2.resize(green_part, (green_part.shape[1] * scale, green_part.shape[0] * scale))
yellow_part = cv2.resize(yellow_part, (yellow_part.shape[1] * scale, yellow_part.shape[0] * scale))
orange_part = cv2.resize(orange_part, (orange_part.shape[1] * scale, orange_part.shape[0] * scale))
red_part = cv2.resize(red_part, (red_part.shape[1] * scale, red_part.shape[0] * scale))
if not os.path.exists("output"):
os.makedirs("output")
if not os.path.exists("output/{}".format(filename)):
if green_ratio >0.15 and orange_ratio <0.05 and red_ratio <0.05:
cv2.imwrite("output/Immature_{}.png".format(filename), img)
elif yellow_ratio > 0.05:
cv2.imwrite("output/Break_{}.png".format(filename), img)
elif orange_ratio > 0.1 and red_ratio < 0.08 and yellow_ratio < 0.6:
cv2.imwrite("output/Pre-harvest_{}.png".format(filename), img)
elif red_ratio > orange_ratio:
cv2.imwrite("output/Harvest_{}.png".format(filename), img)
else:
cv2.imwrite("output/unclear_{}.png".format(filename), img)
else:
if green_ratio >0.15 and orange_ratio <0.05 and red_ratio <0.05:
cv2.imwrite("output/Immature_{}_2.png".format(filename), img)
elif yellow_ratio > 0.05:
cv2.imwrite("output/Break_{}_2.png".format(filename), img)
elif orange_ratio > 0.1 and red_ratio < 0.08 and yellow_ratio < 0.6:
cv2.imwrite("output/Pre-harvest_{}_2.png".format(filename), img)
elif red_ratio > orange_ratio:
cv2.imwrite("output/Harvest_{}_2.png".format(filename), img)
else:
cv2.imwrite("output/unclear_{}_2.png".format(filename), img)
for k in range(1,3):
if k==1:
input_folder = r"crops\ripe"
print("ripe開始處理\n")
ripeness_judgement(input_folder)
elif k==2:
input_folder = r"crops\unripe"
print("unripe開始處理\n")
ripeness_judgement(input_folder)
Learn More →
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up