opencv 簡單背景下列印文件旋轉校正

2021-10-08 11:28:06 字數 3153 閱讀 8038

卡片檢測

1. 讀入

2. canny  邊緣檢測

3. 尋找最外層輪廓

4. 通過最大弧長獲取卡片輪廓

5. 計算卡片的最小外接矩形

6. 計算軟轉矩陣,並進行仿射變換校正

7. 計算單應性矩陣,並進行單應性變換校正

輸出結果:

輸出結果:

輸出結果:

輸出結果:

輸出結果

// 灰度化,邊緣檢測

cv::mat gray;

cv::cvtcolor(src,gray,cv::color_bgr2gray);

cv::mat dstcanny;

cv::canny(gray,dstcanny,50,100);

cv::imshow("canny edges", dstcanny);

// 計算輪廓最大弧長以及id

double arclen=0;

int arcidx =0;

double degree;

for(int i=0; i < contours.size();i++)

}std::cout << "srclen = " << arclen << " arcidx = " << arcidx << std::endl;

cv::drawcontours(src,contours,arcidx,cv::scalar(0,255,0),2);

cv::imshow("外層輪廓", src);

// 最小外接矩形分割輪廓

cv::rotatedrect rect =  cv::minarearect(contours[arcidx]);

degree = rect.angle;

cv::point2f pts[4];

rect.points(pts);

for(int i=0; i<4;i++) cv::line(src,pts[i],pts[(i+1)%4],cv::scalar(0,0,255),2);

cv::imshow("最小外接矩形", src);

// 仿射變換

// cv_exports_w mat getrotationmatrix2d(point2f center, double angle, double scale);

cv::point2f center(src.rows/2,src.cols/2);

cv::mat romh = cv::getrotationmatrix2d(center,degree + 90,1);

/*cv_exports_w void warpaffine( inputarray src, outputarray dst,

inputarray m, size dsize,

int flags = inter_linear,

int bordermode = border_constant,

const scalar& bordervalue = scalar());

*/cv::mat dstaff;

cv::warpaffine(src,dstaff,romh,src.size());

cv::imshow("dstaff",dstaff);

// 單應性矩陣校正

// 計算單應性矩陣

float wmax=rect.size.width;

float hmax=rect.size.height;

std::vectorpt1s;

pt1s.push_back(pts[0]);

pt1s.push_back(pts[1]);

pt1s.push_back(pts[2]);

pt1s.push_back(pts[3]);

std::vectorpt2s;

pt2s.push_back(cv::point2f(0,0));

pt2s.push_back(cv::point2f(wmax,0));

pt2s.push_back(cv::point2f(wmax,hmax));

pt2s.push_back(cv::point2f(0,hmax));

cv::mat hom = cv::findhomography(pt1s,pt2s,cv::ransac);

cv::mat dsthom;

cv::warpperspective(src,dsthom,hom,cv::size(wmax,hmax));

cv::imshow("單應性變換",dsthom);

cv::waitkey(0);

return 0;

}

OpenCV識別圓(複雜背景下的圓)

參考 hsl powerpoint中顏色模式之一 即色相 飽和度 亮度 英語 hue,saturation,lightness hsv opencv中的顏色模式 即色相 飽和度 明度 英語 hue,saturation,value 又稱hsb,其中b即英語 brightness。由於這裡使用open...

debian下OpenCV安裝 簡單測試例項

sudo apt get update wangye debian opencv study apt cache search opencv libcv dev development files for libcv libcv2.1 computer vision library libcvaux...

ubuntu下簡單安裝opencv的方法

github上有人已經寫好了完整的安裝指令碼 chmod x sh 然後安裝最新版本 當前為2.4.9 sudo opencv2 4 9.sh no,no,no wget o opencv 2.4.9.zip echo installing opencv 2.4.9 unzip opencv 2.4...