我正在拍摄一张测试图像,找到我关心的兴趣点并裁剪出来以进行进一步分析。在这一点上,我只剩下一个圆的图像,我试图找到相对于圆心的明亮补丁的中心。我正在挣扎。自从我上大学简历课程以来已经有几年了
我已经尝试过这里给出的方法: https://www.pyimagesearch.com/2014/09/29/finding-brightest-spot-image-using-python-opencv/ 但是我可能实现了错误,因为即使在读取原始图像时也总是会出错,而且我还是想以numpy数组读取。
包含运行脚本和测试图像的PyCharms项目在此处托管 https://github.com/chauncyca/cerberus如果有帮助
def find_circles(filepath):
img = cv2.imread(filepath, 0)
img = cv2.medianBlur(img, 5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 700,
param1=50, param2=30, minRadius=20, maxRadius=100)
circles = np.uint16(np.around(circles))
retval = {}
for i in circles[0, :]:
if in_range(EXPECTED, (i[0], i[1])):
# draw the outer circle
cv2.circle(cimg, (i[0], i[1]), i[2], (0, 255, 0), 2)
# draw the center of the circle
cv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3)
# crop ROI around circle...?
# make sure the bounds won't under-/overflow
cropCoords = (max(0, i[1] - CROPSIZE[0] // 2), min(img.shape[0], i[1] + CROPSIZE[0] // 2),
max(0, i[0] - CROPSIZE[1] // 2), min(img.shape[1], i[0] + CROPSIZE[1] // 2))
crop_cimg = cimg[cropCoords[0]:cropCoords[1],
cropCoords[2]:cropCoords[3]]
在这里,我想获取numpy数组“ crop_cimg”,并检索亮点的中心坐标。