Как стереть конечные точки строк в OpenCV - PullRequest
0 голосов
/ 29 мая 2020

Привет, ребята, я из Вьетнама, так что мой английский sh не подходит, простите меня, если мои слова вас смущают.

У меня есть несколько строк шириной в 1 пиксель (после того, как я скелетонировал двоичное изображение ). Как я могу сделать al oop, который стирает все конечные точки кривых, пока не останется ни одного пикселя, соединенного во всех восьми направлениях, больше двух? (Я просто хочу сохранить самую длинную очередь). Спасибо за вашу помощь :(

Вот ссылка на прореженное изображение:

Я пытаюсь определить длину креветок с помощью обработки изображений. Мои идея состоит в том, чтобы сначала установить пороговое значение для изображения, затем проредить объект, чтобы кривая представляла его длину, и, наконец, измерить длину этой кривой. Это мой код:

import cv2
import numpy as np
from skimage import morphology
from skimage import io

kernel = np.ones((3,3), np.uint8)
kernel2 = np.ones((30,30), np.uint8)

img_ori = cv2.imread("0523.1212.06b.png")
img = cv2.cvtColor(img_ori,cv2.COLOR_BGR2GRAY)

# Threshold the image
ret,mask = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY_INV)
opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel2)
#closing_display = cv2.resize(closing, (605,645))
#cv2.imshow("Closing", closing_display)

# Erase small objects
cnts = cv2.findContours(closing, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
    area = cv2.contourArea(c)
    if area < 5500:
        cv2.drawContours(closing, [c], -1, (0,0,0), -1)
closing_display = cv2.resize(closing, (605,645))
cv2.imshow("Shimp Detecting", closing)

# Determine contours
contours, hierachy = cv2.findContours(closing, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

#Thinning
thinned = cv2.ximgproc.thinning(closing)
thinned_display = cv2.resize(thinned, (605,645))

#Draw contours on thinned
cv2.drawContours(thinned, contours, -1, (321, 100, 100), 2)
cv2.imshow("Thinned Image", thinned)
cv2.waitKey(0)
cv2.destroyAllWindows()
...