亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

Opencv透視變換綜合實例詳解

2020-01-26 13:27:29
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Opencv透視變換綜合實例的具體代碼,供大家參考,具體內容如下

案例背景:對下面發生畸變的圖像進行校正

方案思路:灰度二值化分割,閉操作,尋找輪廓,霍夫直線檢測,直線排序,直線方程,直線交點,透視矩陣,透視變換。

#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; findContours(binaryImg, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point()); for (int i = 0; i < contours.size(); i++) { Rect rect = boundingRect(contours[i]); if (rect.width < src.cols / 2 && rect.height < src.rows / 2)continue; drawContours(draw, contours, i, Scalar(0, 0, 255), 2); } imshow("output2", draw);  //霍夫直線檢測 vector<Vec4i> lines; cvtColor(draw, draw, CV_BGR2GRAY); HoughLinesP(draw, lines, 1, CV_PI / 180, src.rows/2,src.rows/2,0); Mat draw2 = Mat::zeros(src.size(), CV_8UC3); for (int j = 0; j < lines.size(); j++) { Vec4i ln = lines[j]; line(draw2, Point(ln[0], ln[1]), Point(ln[2], ln[3]), Scalar(0, 255, 0), 2);  } printf("number of line:%d/n", lines.size()); imshow("output3", draw2);  //尋找與定位直線 Vec4i topLine,bottomLine,leftLine,rightLine; for (int j = 0; j < lines.size(); j++) { Vec4i ln = lines[j]; if (ln[1] < src.rows / 2 && ln[3] < src.rows / 2) {  topLine = ln; } if (ln[1] > src.rows / 2 && ln[3] > src.rows / 2) {  bottomLine = ln; } if (ln[0] < src.cols / 2 && ln[2] < src.cols / 2) {  leftLine = ln; } if (ln[0] > src.cols / 2 && ln[2] > src.cols / 2) {  rightLine = ln; } } cout << "topLine:p1(x,y)=" << topLine[0] << "," << topLine[1]<<" " << "p2(x,y)=" << topLine[2] << "," << topLine[3] << endl; cout << "bottomLine:p1(x,y)=" << bottomLine[0] << "," << bottomLine[1] << " " << "p2(x,y)=" << bottomLine[2] << "," << bottomLine[3] << endl; cout << "leftLine:p1(x,y)=" << leftLine[0] << "," << leftLine[1] << " " << "p2(x,y)=" << leftLine[2] << "," << leftLine[3] << endl; cout << "rightLine:p1(x,y)=" << rightLine[0] << "," << rightLine[1] << " " << "p2(x,y)=" << rightLine[2] << "," << rightLine[3] << endl;  //求解直線方程 float k1, c1; k1 = float((topLine[3] - topLine[1])) / float(topLine[2] - topLine[0]); c1 = topLine[1] - k1*topLine[0]; float k2, c2; k2 = float((bottomLine[3] - bottomLine[1])) / float(bottomLine[2] - bottomLine[0]); c2 = bottomLine[1] - k2*bottomLine[0]; float k3, c3; k3 = float((leftLine[3] - leftLine[1])) / float(leftLine[2] - leftLine[0]); c3 = leftLine[1] - k3*leftLine[0]; float k4, c4; k4 = float((rightLine[3] - rightLine[1])) / float(rightLine[2] - rightLine[0]); c4 = rightLine[1] - k4*rightLine[0];  //求解直線交點 Point p1; p1.x = (int)((c1 - c3) / (k3 - k1)); p1.y = (int)(k1*p1.x + c1); Point p2; p2.x = (int)((c1 - c4) / (k4 - k1)); p2.y = (int)(k1*p2.x + c1); Point p3; p3.x = (int)((c2 - c4) / (k4 - k2)); p3.y = (int)(k2*p3.x + c2); Point p4; p4.x = (int)((c2 - c3) / (k3 - k2)); p4.y = (int)(k2*p4.x + c2); cout << "左上角:" << p1.x << "," << p1.y << endl; cout << "右上角:" << p2.x << "," << p2.y << endl; cout << "右下角:" << p3.x << "," << p3.y << endl; cout << "左下角:" << p4.x << "," << p4.y << endl;  //畫出交點 circle(draw2, p1, 2, Scalar(0, 0, 255)); circle(draw2, p2, 2, Scalar(0, 0, 255)); circle(draw2, p3, 2, Scalar(0, 0, 255)); circle(draw2, p4, 2, Scalar(0, 0, 255)); imshow("output4", draw2);  //透視變換 vector<Point2f> srcCorners(4); srcCorners[0] = p1; srcCorners[1] = p2; srcCorners[2] = p3; srcCorners[3] = p4; vector<Point2f> dstCorners(4); dstCorners[0] = Point(0, 0); dstCorners[1] = Point(src.cols, 0); dstCorners[2] = Point(src.cols, src.rows); dstCorners[3] = Point(0, src.rows);  Mat warpMartrix = getPerspectiveTransform(srcCorners, dstCorners);//Mat warpMartrix = findHomography(srcCorners, dstCorners);  Mat result = Mat::zeros(src.size(), -1); warpPerspective(src, result, warpMartrix, result.size(),INTER_LINEAR); imshow("output5", result); waitKey(0); return 0; }

原圖像

二值化閉操作

尋找輪廓

霍夫直線

直線及其交點

效果圖

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九精品在线视频| 日韩电影在线观看免费| 精品国产精品自拍| 久久伊人精品天天| 午夜精品久久久久久久99黑人| 欧美专区第一页| 精品久久中文字幕| 欧美日韩一区二区在线播放| 久久免费精品视频| 欧美一级淫片aaaaaaa视频| 亚洲乱码av中文一区二区| 国产精品男女猛烈高潮激情| 亚洲色图国产精品| 久久综合国产精品台湾中文娱乐网| 日韩国产精品一区| 精品爽片免费看久久| 亚洲第一色中文字幕| 欧美成人免费视频| 日韩人在线观看| 亚洲人成在线免费观看| 欧美视频在线观看免费| 日本乱人伦a精品| 欧美成人精品h版在线观看| 国产精品丝袜白浆摸在线| 亚洲福利视频网站| 日韩精品在线免费播放| 国产精品自产拍在线观看中文| 欧美在线视频观看免费网站| 爽爽爽爽爽爽爽成人免费观看| 第一福利永久视频精品| 国产一区二区欧美日韩| 8x海外华人永久免费日韩内陆视频| 欧美视频不卡中文| 欧美国产日产韩国视频| 久久国产精品久久久久| 亚洲国产婷婷香蕉久久久久久| 亚洲毛片在线看| 美日韩精品视频免费看| 日韩成人高清在线| 国产免费观看久久黄| 色偷偷9999www| 欧美一区在线直播| 亚洲精品一区久久久久久| 久久久国产精品亚洲一区| 2019av中文字幕| 全色精品综合影院| 国产欧美精品xxxx另类| 国精产品一区一区三区有限在线| 国产精品观看在线亚洲人成网| 久久久久久国产精品美女| 国产精品电影一区| 欧美wwwxxxx| 亚洲国产欧美精品| 91亚洲精品在线| 在线视频欧美日韩| 国产精品日韩专区| 欧美性猛交xxxx偷拍洗澡| 欧美贵妇videos办公室| 一区二区福利视频| 欧美另类极品videosbest最新版本| 欧美日韩在线一区| 国产精品尤物福利片在线观看| 黄色成人av在线| 91日本在线视频| 欧美国产亚洲精品久久久8v| 最新69国产成人精品视频免费| 95av在线视频| 日韩av影院在线观看| 中文字幕日韩av综合精品| 中文日韩在线视频| 2020国产精品视频| 搡老女人一区二区三区视频tv| 国产精品成人免费电影| 国产精品久久久久久久久免费看| 国产成人免费av| 精品二区三区线观看| 亚洲国产精品va在线看黑人动漫| 久久久影视精品| 欧美日韩激情视频8区| 91wwwcom在线观看| 91国产在线精品| 91久久国产综合久久91精品网站| 国产成人aa精品一区在线播放| 黑人巨大精品欧美一区二区三区| 国内精品400部情侣激情| 久久久久国产视频| 国产成人鲁鲁免费视频a| 成人在线精品视频| 欧美黄色免费网站| 精品视频在线播放| 在线成人激情黄色| 欧美日韩国产在线播放| 欧美在线www| 日本一欧美一欧美一亚洲视频| 欧美中文字幕在线视频| 国产日韩换脸av一区在线观看| 热久久这里只有精品| 国产美女精彩久久| 高潮白浆女日韩av免费看| 欧美巨乳美女视频| 日本不卡免费高清视频| 欧美激情一级精品国产| 国产精品久久9| 欧美高清视频一区二区| 精品视频在线观看日韩| 国内揄拍国内精品少妇国语| 97超碰蝌蚪网人人做人人爽| 欧美理论片在线观看| 精品免费在线视频| 日韩av片免费在线观看| 日韩中文字幕久久| 国产精品一区二区久久国产| 精品中文字幕久久久久久| 精品久久久国产精品999| 精品久久久久久久久久ntr影视| 狠狠躁夜夜躁久久躁别揉| 午夜精品久久久久久久久久久久久| 国产日韩av在线| 91久久精品国产| 原创国产精品91| 一区二区三区视频在线| 亚洲香蕉成视频在线观看| 国产精品成人久久久久| 日韩在线观看视频免费| 亚洲精品在线91| 久久99精品久久久久久琪琪| 伊人久久大香线蕉av一区二区| 欧美亚洲视频在线观看| 尤物tv国产一区| 国产精品jvid在线观看蜜臀| 亚洲天堂成人在线视频| 亚洲精品中文字幕女同| 久久不射热爱视频精品| 久久99精品视频一区97| 欧美日韩精品在线播放| 国产精品久久久久久搜索| 日韩欧美成人区| xvideos亚洲人网站| 国产成人短视频| 97av在线影院| 激情亚洲一区二区三区四区| 国产日韩精品综合网站| www.欧美免费| 国产亚洲a∨片在线观看| 91精品国产综合久久香蕉922| 亚洲人成自拍网站| 久久精品国产v日韩v亚洲| 日韩欧美精品中文字幕| 色妞一区二区三区| 日本高清+成人网在线观看| 自拍偷拍亚洲欧美| 欧美性猛交99久久久久99按摩| 日韩精品欧美国产精品忘忧草| 福利一区福利二区微拍刺激| 国产91露脸中文字幕在线| 久久久久久久久久久亚洲| 亚洲激情免费观看| 国产精品久久久久久久久男| 亚洲国内高清视频| 97在线免费观看| 日韩av免费在线观看| 国产欧美日韩综合精品| 国产ts人妖一区二区三区| 日韩av在线影院|