阅读hough.cpp后,我不明白这一行:
r += (numrho - 1) / 2;
我们找到了rho:方程int r = cvRound( j * tabCos[n] + i * tabSin[n] );
为什么要添加r+=r += (numrho - 1) / 2;
?
如果有人能够准确地解释本地最大查找操作,那将是非常好的。
可以在https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/hough.cpp
找到霍夫代码答案 0 :(得分:0)
我没有在CPP中编程,但我相信cvRound对象已经使用了数学运算符,通过使用数学运算来改变cvRound对象的某些方面。这是关于cvRound对象的一些信息。
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html
以下是有关CPP中加法运算符的一些信息。
http://www.programiz.com/cpp-programming/operator-overloading
通过查看这些来源,我希望你找到你想要的东西。
答案 1 :(得分:0)
在参数空间(r,theta)中,我们有
r = x cos(theta)+ y sin(theta)
关键是 r可能是否定的!
所以你应该通过添加(numrho - 1)/ 2
将r转换为非负面的希望它有所帮助。