自動透視校正為四邊形物件

2021-06-14 10:58:35 字數 1149 閱讀 1459

參考opencv開源上的,跑通了  注釋了一下,以便後續學習

#include #include #include

cv::point2f center(0,0);

cv::point2f computeintersect(cv::vec4i a,cv::vec4i b)

else

return cv::point2f(-1,-1);

}void sortcorners(std::vector& corners,cv::point2f center)

演算法流程:先彩色轉灰度,然後模糊求canny邊緣,再用hough檢測直線,求出四線交點,利用opencv自帶的求透視矩陣的函式求出透視矩陣,然後利用透視矩陣轉換源影象所需的四邊形,效果圖後續見:

int main()

cv::mat bw;

cv::cvtcolor(src,bw,cv_bgr2gray);

imshow("gray_src",bw);

cv::blur(bw,bw,cv::size(3,3));

imshow("blur",bw);

cv::canny(bw,bw,100,100,3);

imshow("cannyblur",bw);

std::vectorlines;

cv::houghlinesp(bw,lines,1,cv_pi/180,70,30,10);

//1畫素分辨能力 1度的角度分辨能力 >70可以檢測成連線 30是最小線長

//在直線l上的點(且點與點之間距離小於maxlinegap=10的)連成線段,然後這些點全部刪除,並且記錄該線段的引數,就是起始點和終止點

//needed for visualization only//這裡是將檢測的線調整到延長至全屏,即射線的效果,其實可以不必這麼做

for (unsigned int i = 0;icorners;//線的交點儲存

for (unsigned int i = 0;i= 0 && pt.y >=0)}}

參考**

四邊形優化

匆匆忙忙搞了一下四邊形優化,也就是做了幾道入門題而已 四邊形不等式詳解 反正我就記住這句話 判斷w是否為凸即判斷 w i,j 1 w i,j 的值隨著i的增加是否遞減 hdu 2829 include include include using namespace std define maxn 1...

四邊形填充

四邊形填充算,除了比較笨的洪流法外,就是掃瞄線法了 基本演算法是 1 求交,計算掃瞄線與多邊形的交點 2 交點排序,對第2步得到的交點按照x值從小到大進行排序 3 顏色填充,對排序後的交點兩兩組成乙個水平線段,以畫線段的方式進行顏色填充 4 是否完成多邊形掃瞄?如果是就結束演算法,如果不是就改變掃瞄...

定義四邊形 圓的內接四邊形

1 圓內接多邊形定義 多邊形的所有頂點都在同乙個圓上,這個多邊形叫圓內接多邊形,這個圓叫這個多邊形的外接圓。2 圓內接四邊形定義 四邊形的所有頂點都在同乙個圓上,這個四邊形叫圓內接四邊形,這個圓叫這個四邊形的外接圓。3 判定定理 如果乙個四邊形的對角互補,那麼它的四個頂點在同乙個圓上 簡稱四點共圓 ...