
(в качестве примера я выделил странный контур, обнаруженный знаком Красного Креста; однако , я хочу обнаружить только задние круги или даже любой круг на изображении, выделенный красными кругами..
Я даже применил пороговое значение, но без изменений..
Я прикрепляю исходное изображение

..
Я также могу знать контрастность изображение не в порядке... но я просто хочу понять, почему поиск контура дает странные контуры... Есть ли способ не выбирать все контуры?.
Использованный код показан ниже
import cv2
from matplotlib import pyplot as plt
import numpy as np
# Read image
img = cv2.imread('test_shapes.png')
out=img.copy()
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
# Use fixed threshold to mask black areas
_, thresh = cv2.threshold(gray, 30, 255, cv2.THRESH_BINARY_INV)
# Morphological closing to get whole particles; opening to get rid of noise
img_mop = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 7)))
img_mop = cv2.morphologyEx(img_mop, cv2.MORPH_OPEN, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (15, 15)))
connectivity=4
outout_c=cv2.connectedComponentsWithStats (img_mop,connectivity,cv2.CV_32S)
num_labels=outout_c[0]
labels=outout_c[1]
stats=outout_c[2]
centroids=outout_c[3]
output_img=np.zeros(gray.shape,dtype='uint8')
for i in range(1,num_labels):
area=stats[i,cv2.CC_STAT_AREA]
if 100
Подробнее здесь: https://stackoverflow.com/questions/791 ... contours-d