參考鏈接:https://blog.csdn.net/u010189457/article/details/71553436?utm_source=itdadao&utm_medium=referral
可以理解爲列數組成了X軸,有多少列則圖形的X軸處爲 img.cols,行數組成了Y軸,有多少行則圖形Y軸處爲img.rows
遍歷的順序喜歡從行再到列即:
for(int i = 0;i<img.rows;++i){
for(int j = 0;j<img.cols;++j){
if(img.channels()==1){
img.at<uchar>(i,j)...;
}
else if(img.channels()==3){
img.at<uchar>(i,j)[0]...
img.at<uchar>(i,j)[1]...
img.at<uchar>(i,j)[2]...
}
}
}
另外,opencv圖像中圖像尺寸都是按照先寬後高輸出的,比如640*320表示img.size()=640*320,img.cols()=640,img.rows=320.
霍夫直線變換返回vector<Vec4i> ,每個元素都是Vec4i,其中前兩個一組(x1,y1),後兩個一組(x2,y2)分別表示檢測到直線的起點和終點
隨便做了一個霍夫變換找到的直線如下,我們找到第一條直線【41,42,55,56】
可以看到,每條直線是按照X軸排序輸出的,可以理解爲起點爲X軸小的那個點(41,41),終點爲X軸大的點(55,56)
霍夫圓變換得到圓心(X,Y)xy對應圖一.
重這個Vec4i輸出結果可以看出,如果x相同按照y小的點在前面
總結:霍夫變換檢測的直線用兩個點表示,這兩個點按照從做到又從上到下的方法排列方式,知道直線這兩個點的排列順序這個對於如何求斜率判斷角度就有用了。