Необходимо определить красный цвет изображения и получить координаты на основе размера экрана.Блокировка фильтра с использованием opencv в python
- Использование маски принес часть изображения, имеющего красного цвета
- превратил его в BW
- Прикладных гауссовского фильтра к нему.
Окончательное изображение имеет небольшие тела, которые мне нужно удалить и получить координаты остального. Я попробовал SimpleBlobDetector, но не помог. Это мой код -
import cv2
import numpy as np
from PIL import Image
img=cv2.imread("D:\Ankur\Free\line.png")
img_hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_red = np.array([0,50,50])
upper_red = np.array([10,255,255])
mask0 = cv2.inRange(img_hsv, lower_red, upper_red)
lower_red = np.array([170,50,50])
upper_red = np.array([180,255,255])
mask1 = cv2.inRange(img_hsv, lower_red, upper_red)
mask = mask0+mask1
output_img = img.copy()
output_img[np.where(mask==0)] = 0
gray = cv2.cvtColor(output_img, cv2.COLOR_BGR2GRAY)
#Adaptive Gaussian Thresholding
gray = cv2.medianBlur(gray,5)
th3 = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
cv2.imshow("images", th3)
#cv2.ims
cv2.waitKey(0)
Это изображение я использую и финальное изображение -
Исходное изображение:
после гауссова фильтра
Почему бы не попробовать найти контуры? Найдите контуры и отклоните меньшие по площади или периметру и сохраните более крупные. Затем нарисуйте прямоугольник вокруг остальных больших контуров, получив координаты. –