不足:2018.11.16:
**已上傳:
平台:
vs2017
c++opencv3庫
原圖
結果:
原圖:
結果:
//邊緣檢測
canny
(srcimage, dstimage,
210,
250,3)
;//灰度化
// 定義向量結構存放檢測出來的直線
vector lines;
//通過這個函式,我們就可以得到檢測出來的直線集合了
houghlines
(midimage, lines,
1, cv_pi /
180,
300,0,
0);//這裡注意第五個引數,表示閾值,閾值越大,表明檢測的越精準,速度越快,得到的直線越少(得到的直線都是很有把握的直線)
//這裡得到的lines是包含rho和theta的,而不包括直線上的點,所以下面需要根據得到的rho和theta來建立一條直線
//依次畫出每條線段
很簡單,橫著的線theta>1.57, 豎著的0if
雖然是八個座標,但我只用了其中四組,後面會講到。
輸入四組點,就可以返回交點了
cvpoint crosspoint
(const cvpoint line1,
const cvpoint line2,
const cvpoint line3,
const cvpoint line4)
//交點
完成理想狀態是只有兩條線,直接取得中點,但是有時候雷射太粗了。每條雷射有2條直線,我都取得最後一條,所以導致結果實際中點在這裡(黑點處)
如果沒有檢測到直線,程式就崩了,想改進可以加乙個沒檢測到直線後的操作就ok
如果要改進的畫的精度有很多辦法,比如:
1.找到四個交點,取四個交點的中心
2.或者去多條平行直線的中線再,剩2條直線再做計算
OpenCV 霍夫線變換 霍夫圓變換
關於霍夫變換在官方文件opencv249裡的描述如下 api如下 void houghlines inputarray image,outputarray lines,double rho,double theta,int threshold,double srn 0,double stn 0 vo...
缺點 霍夫圓 霍夫變換
霍夫變換是一種特徵提取,被廣泛應用在影象分析 電腦視覺以及數字影像處理。霍夫變換是用來辨別找出物件中的特徵,例如 線條。他的演算法流程大致如下,給定乙個物件 要辨別的形狀的種類,演算法會在引數空間中執行投票來決定物體的形狀,而這是由累加空間 accumulator space 裡的區域性最大值來決定...
霍夫變換 Hough Transform
霍夫變換的主要作用是從影象中檢測出具有某種相同特徵的幾何形狀,如直線 圓等。霍夫變換的基本原理 例如檢測情景為直線檢測。我們知道,在直角座標系下,直線方程表示為y k x b 其中k,b 為引數,表示直線的斜率和截距。那麼,對於直角座標系下的某個特定點 x 0,y0 過該點的任意直線方程為y0 k ...