这篇论文似乎与我的问题非常相关,但我可以在网上找到代码。
Splitting touching cells based on concave points and ellipse fitting也是。
我也在试图理解他们的算法。我一直在寻找接触物体的凹点。
下面是我的代码:
import numpy as np
import cv2
img = cv2.imread("binary_img.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret,thresh_img = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
thresh_img = 255- thresh_img
contours, hierarchy = cv2.findContours(thresh_img,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
hull = []
# calculate points for each contour
for i in range(len(contours)):
# creating convex hull object for each contour
hull.append(cv2.convexHull(contours[i], False))
# create an empty black image
drawing = np.zeros((thresh_img.shape[0], thresh_img.shape[1], 3), np.uint8)
# draw contours and hull points
for i in range(len(contours)):
color_contours = (0, 255, 0) # green - color for contours
color = (255, 0, 0) # blue - color for convex hull
# draw ith contour
cv2.drawContours(drawing, contours, i, color_contours, 1, 8, hierarchy)
# draw ith convex hull object
cv2.drawContours(drawing, hull, i, color, 1, 8)
cv2.imwrite("19_drawing.png", drawing)
cv2.imshow("Drawing", drawing)
cv2.waitKey()
目标:
我想得到下面的凹点,并适合椭圆。我的代码只是简单地 Package 四肢。
任何帮助或指导将不胜感激。先谢谢你。
1条答案
按热度按时间dxxyhpgq1#
第一个明显的点是探索凸缺陷。凹点是凸壳的缺陷,所以如果你选择最小的,你可以很容易地找到它们。另一个方向是探索傅立叶描述符并检查实际点与其描述符之间的Map。FD的优点是它们是方向和尺度不变的。