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

..
Я также могу знать, что контрастность изображения не ок.. но я просто хочу понять, почему поиск контура дает странные контуры.. Есть ли способ не выбирать все контуры?.
Использованный код показан ниже
Код: Выделить всё
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79190746/find-black-circles-contour-for-specific-shape-in-an-image-but-wrong-contours-d[/url]