我目前正试图检测两者;杯子和青光眼图像的圆盘。他们从图像的其余部分中脱颖而出的方式是它们比图像的其余部分更亮。但杯子比光盘更亮,所以我只能检测杯子。我想要实现的是,包围两者;杯子和圆盘有两个不同的圆圈。杯子是最亮的图像,并且是第二亮的。我以前怎么做呢?
这是我的代码(只检测杯子并环绕它。我试图检测它们;杯子和圆盘,用不同的圆圈环绕它们。)
image = cv2.imread(args["image"])
orig = image.copy()
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (args["radius"], args["radius"]), 0)
(minVal, maxVal, minLoc, maxLoc) = cv2.minMaxLoc(gray)
image = orig.copy()
cv2.circle(image, maxLoc, args["radius"], (255, 0, 0), 2)
cv2.namedWindow("Test", cv2.WINDOW_NORMAL)
cv2.imshow("Test", image)
cv2.waitKey(0)
我也试图在没有手动输入半径的情况下这样做。如果您对此有所了解,请分享。
答案 0 :(得分:0)
我在使用某种颜色跟踪对象时遇到了类似的问题。我的方法是下一个:
In my repository我有一些代码(虽然它是C ++,因为它是一个ROS项目),我使用它来跟踪蓝色对象。
使用阈值和力矩的优势在于,如果您的图像稍微转动,使用缩放甚至移动,您仍然可以跟踪所需的对象并计算半径,中心等元素
希望这能帮到你!