需要從圖像中檢測紅色並根據屏幕大小獲取座標。在python中使用opencv進行Blob過濾
- 使用掩模取出圖像具有紅色
- 轉換的部分它到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)
這是我使用的圖像和最終圖像 -
原圖:
高斯濾波器後
爲什麼不試着找到輪廓?根據面積或周長查找輪廓並拒絕較小的輪廓,並保留較大的輪廓。然後在剩下的大輪廓周圍繪製一個矩形即可獲得座標。 –