Конкретное обнаружение контуров на основе цвета в PythonPython

Программы на Python
Ответить
Anonymous
 Конкретное обнаружение контуров на основе цвета в Python

Сообщение Anonymous »

Я пытаюсь обнаружить пузырьки на изображении под названием test_1. Я хочу обнаружить конкретные контуры, как показано на прикрепленном ожидаемом изображении: ожидаемое выходное изображение с контурами (получено из красных, в основном черных пузырьков).
Я использовал OpenCV и получил элемент структурирования (я также пробовал ранее с детектором BLOB-объектов), однако, кажется, я обнаруживаю больше, чем хочу. Он не может определить точный контур, поскольку обнаруживает больше контуров (очень больших или очень маленьких) и игнорирует то, что я хочу. Я надеюсь, что кто-нибудь подскажет мне, как просто взять несколько пузырьков, пометить их и вычислить периметр каждого пузыря.
import cv2

img=cv2.imread('test_1.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (11,5), 0)
thresh = cv2.threshold(blur, 127,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3))
img_ker = cv2.morphologyEx(thresh,cv2.MORPH_CLOSE,kernel,iterations = 2)
img_ker = clear_border(img_ker)
# Find contours
contours, hierarchy = cv2.findContours(image=thresh, mode=cv2.RETR_TREE, method=cv2.CHAIN_APPROX_NONE)

# draw contours on the original image
x=cv2.drawContours(image=image_copy, contours=contours, contourIdx=-1, color=(0,255, 0), thickness=2, lineType=cv2.LINE_AA)
plt.imshow(cv2.cvtColor(x, cv2.COLOR_BGR2RGB))
plt.tight_layout()
plt.show()


Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»