我已经阅读了很多有关Stack Overflow上的Circular Hough变换的信息,但是我似乎缺少了一些东西。我编写了一个程序,该程序应该能够检测“靶心”目标的圆圈。但是,即使在使用了参数之后,该算法也非常糟糕-它忽略了大多数圆圈,有一次它找到了一个圆圈,但是似乎在“徘徊”。我什至尝试应用“不清晰的蒙版”都无济于事。我已经添加了代码,我开始使用的图像和输出。我希望有人能指出我正确的方向。
import cv2
import cv2.cv as cv
import numpy as np
import math
# Load Image
img = cv2.imread('circles1.png',0)
# Apply Unsharp Mask
tmp = cv2.medianBlur(img,5)
img = cv2.addWeighted(img,1.5,tmp,-0.5,0)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
# Hough Transform
circles = cv2.HoughCircles(img,cv.CV_HOUGH_GRADIENT,1,5,
param1=100,param2=100,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
# Go over circles, eliminating the ones that are not cocentric enough
height, width = img.shape
center = (width/2,height/2)
for i in circles[0,:]:
# draw the outer circle
if math.sqrt((center[0]-i[0])**2 + (center[1]-i[1])**2) < 15:
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),1)
# …
Run Code Online (Sandbox Code Playgroud) 我找到了以下函数调用:
reshape(A, 1, [])
Run Code Online (Sandbox Code Playgroud)
这使得矩阵A colum major变平.我想了解这个电话.函数文档说在A之后应该有重构矩阵的大小向量,但是在这里有一个后跟[]而不是两个向量.这是一种说法"不管它做什么,所以矩阵将有一行,我不关心宽度是什么"?
为什么Matlab会让你像这样交换两个参数?我试着用谷歌搜索并没有找到解释,我想知道这里发生了什么.