霍夫直線變換返回值Vec4i

參考鏈接: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小的點在前面

總結:霍夫變換檢測的直線用兩個點表示,這兩個點按照從做到又從上到下的方法排列方式,知道直線這兩個點的排列順序這個對於如何求斜率判斷角度就有用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章