案例背景:对下面发生畸变的图像进行校正
方案思路:灰度二值化分割,闭操作,寻找轮廓,霍夫直线检测,直线排序,直线方程,直线交点,透视矩阵,透视变换。
#include<opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main(int arc, char** argv) {
Mat src = imread("1.jpg");
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
//灰度化
Mat grayImg;
cvtColor(src, grayImg, CV_BGR2GRAY);
//二值化
Mat binaryImg;
threshold(grayImg, binaryImg, 0, 255, THRESH_BINARY_INV | THRESH_OTSU);
//闭操作
Mat kernel = getStructuringElement(MORPH_RECT,Size(3,3));
morphologyEx(binaryImg, binaryImg, MORPH_CLOSE,kernel,Point(-1,-1) ,3);
imshow("output", binaryImg);
//寻找轮廓
Mat draw = Mat::zeros(src.size(), CV_8UC3);
vector<vector<Point>>contours;
find