[img]https://i.sstatic. net/Tp9ojdPJ.jpg[/img]
(для красных фигур должна быть создана маска) и ниже ожидаемой фигуры
затем я хочу определить площадь этих фигур.
Код: Выделить всё
import cv2
import numpy as np
from matplotlib import pyplot as plt
from colorthief import ColorThief
ct=ColorThief('image_red.png')
domainant_color = ct.get_color(quality=1)
palette = ct.get_palette(color_count=number_colors)
print(palette)
plt.imshow([[palette[i] for i in range(number_colors)]])
plt.show()
#LOAD IMAGE
image_org=cv2.imread("image_red.png",0)
print(image_org.shape)
#FILTER /REMOVE NOISES
img_filter=cv2.medianBlur(image_org, 3)
#### THRESHOLDING..
thresh_value,thresh_img=cv2.threshold(img_filter,0,225,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
low=np.array([251, 4, 4], dtype = "uint8") #this is based on values from palette
upper=np.array([251, 4, 4], dtype = "uint8")#this is based on values from palette
img_f = cv2.cvtColor(thresh_img, cv2.COLOR_BGR2RGB)
mask1=cv2.inRange(img_f,lo,up)
io.imshow(mask1)
plt.show()
- получение палитры из большинства 5 доминирующих цветов, затем получение RGB красного цвета
- импорт исходного изображения. Затем я использовал фильтр для удаления шумов, а затем установил порог (но не уверен, правильный ли порог или нет).
- Я применил cv2.Range и добавил нижнее и верхнее значения RGB красного цвета к получите только красные фигуры и создайте маску...
Подробнее здесь: https://stackoverflow.com/questions/791 ... age-python