精明的图像操作
Canny Operation on Image
我希望在下图中(通过使用 Python):
1.) 找到骨骼的轮廓(只有侧面就行)
2.) 认识并画出所有的轮廓。
它可能看起来像这样:
轮廓再好一点就好了。我不完全确定我该如何解决这个问题,
图片的梯度为:
您应该首先使用 cv2.threshold
应用阈值来清除不需要的物体的图像,尝试不同的强度值来捕捉边界,然后应用一些形态学操作,例如 OPENING
和 CLOSING
与 cv2.morphologyEx
清理一点图像,填充 holes 最后应用 cv2.findContours
和 cv2.drawContours
以获得轮廓的最终图像的骨头。
检查 opencv library 上的那些命令
您会在 Whosebug 和互联网上找到非常好的示例,请尝试根据这些示例调整您的代码。
希望对您有所帮助。
解决这个问题的初步方法是使用正确的阈值进行精明的边缘检测,然后找到轮廓。
import cv2
# Load the image
img = cv2.imread("/home/tribta/Desktop/feet.png")
# Find the contours
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(img,60,200)
im2, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
hierarchy = hierarchy[0] # get the actual inner list of hierarchy descriptions
# For each contour, find the bounding rectangle and draw it
cv2.drawContours(img, contours, -1, (0,255,0), 3)
# Finally show the image
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
然后你可以添加一些生物医学处理标准来区分不同的轮廓并验证它是否真的是骨头。
我希望在下图中(通过使用 Python):
1.) 找到骨骼的轮廓(只有侧面就行)
2.) 认识并画出所有的轮廓。
它可能看起来像这样:
轮廓再好一点就好了。我不完全确定我该如何解决这个问题,
图片的梯度为:
您应该首先使用 cv2.threshold
应用阈值来清除不需要的物体的图像,尝试不同的强度值来捕捉边界,然后应用一些形态学操作,例如 OPENING
和 CLOSING
与 cv2.morphologyEx
清理一点图像,填充 holes 最后应用 cv2.findContours
和 cv2.drawContours
以获得轮廓的最终图像的骨头。
检查 opencv library 上的那些命令 您会在 Whosebug 和互联网上找到非常好的示例,请尝试根据这些示例调整您的代码。 希望对您有所帮助。
解决这个问题的初步方法是使用正确的阈值进行精明的边缘检测,然后找到轮廓。
import cv2
# Load the image
img = cv2.imread("/home/tribta/Desktop/feet.png")
# Find the contours
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(img,60,200)
im2, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
hierarchy = hierarchy[0] # get the actual inner list of hierarchy descriptions
# For each contour, find the bounding rectangle and draw it
cv2.drawContours(img, contours, -1, (0,255,0), 3)
# Finally show the image
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
然后你可以添加一些生物医学处理标准来区分不同的轮廓并验证它是否真的是骨头。