欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCV實(shí)現(xiàn)透視變換矯正

 更新時(shí)間:2022年01月23日 10:30:26   作者:GraceSkyer  
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)透視變換矯正,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了OpenCV實(shí)現(xiàn)透視變換矯正的具體代碼,供大家參考,具體內(nèi)容如下

演示結(jié)果參考:

功能實(shí)現(xiàn):運(yùn)行程序,會(huì)顯示圖片的尺寸,按回車鍵后,依次點(diǎn)擊需矯正的圖片的左上、右上、左下、右下角,并能顯示其坐標(biāo),結(jié)果彈出矯正后的圖片,如圖上的PIC2對(duì)話框??梢岳^續(xù)選擇圖片四個(gè)點(diǎn)進(jìn)行實(shí)驗(yàn),按下字符'q'后退出。

代碼如下:(注:圖中的11.jpg圖片自己選取放到該程序目錄下。)

//使用鼠標(biāo)在原圖像上選取感興趣區(qū)域
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
using namespace std;
using namespace cv;
const int N = 400;
const int M = 220;
Mat img;
Point p[5];
int flag = 1;
int cnt = 0;
static void mouse_callback(int event, int x, int y, int, void *) {
? ? //當(dāng)鼠標(biāo)左鍵按下時(shí),記錄其坐標(biāo)
? ? if(event == EVENT_LBUTTONDOWN) {
? ? ? ? p[cnt].x = x*1.0; p[cnt++].y = y*1.0;
? ? ? ? cout << "p" << cnt << " is recorded at " << p[cnt-1] << endl;
? ? }

? ? if(cnt==4) {
? ? ? ? ? ? cnt=0;
? ? ? ? ? ? //變換前圖像四個(gè)點(diǎn)
? ? ? ? ? ? vector<Point2f>src(4);
? ? ? ? ? ? src[0] = p[0];
? ? ? ? ? ? src[1] = p[1];
? ? ? ? ? ? src[2] = p[2];
? ? ? ? ? ? src[3] = p[3];
? ? ? ? ? ? //變換后
? ? ? ? ? ? vector<Point2f>dst(4);
? ? ? ? ? ? dst[0] = Point2f(0, 0);//左上
? ? ? ? ? ? dst[1] = Point2f(N, 0);//右上
? ? ? ? ? ? dst[2] = Point2f(0, M);//左下
? ? ? ? ? ? dst[3] = Point2f(N, M);//右下
? ? ? ? ? ? //獲取透視變換矩陣

? ? ? ? ? ? Mat m = getPerspectiveTransform(src, dst);
? ? ? ? ? ? Mat res;
? ? ? ? ? ??
? ? ? ? ? ? warpPerspective(img, res, m, Size(N, M),INTER_LINEAR);//實(shí)現(xiàn)圖像透視變換
? ? ? ? ? ? namedWindow("PIC2",1);
? ? ? ? ? ? imshow("PIC2", res);
? ? ? ? ? ? waitKey(0);
? ? ? ? } ? ?

}
int main() {
? ? img = imread("11.jpg");
? ? if(!img.data) {cout<<"read image file wrong!"<<endl; getchar(); return 0;}
? ? cout << "height = " << img.size().height << ",width = " << img.size().width << endl;
? ? getchar();

? ? namedWindow("PIC");
? ? imshow("PIC", img);
? ??
? ? setMouseCallback("PIC", mouse_callback);//設(shè)置鼠標(biāo)事件回調(diào)函數(shù)
? ??
? ? while(char(waitKey(1)) != 'q') {}

? ? return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語(yǔ)言程序設(shè)計(jì)之指針的應(yīng)用詳解

    C語(yǔ)言程序設(shè)計(jì)之指針的應(yīng)用詳解

    為了讓大家能夠更準(zhǔn)確的了解C語(yǔ)言中指針的使用,本文為大家準(zhǔn)備了四個(gè)指針相關(guān)的例題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2022-11-11
  • C++實(shí)現(xiàn)LeetCode(36.驗(yàn)證數(shù)獨(dú))

    C++實(shí)現(xiàn)LeetCode(36.驗(yàn)證數(shù)獨(dú))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(36.驗(yàn)證數(shù)獨(dú)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 簡(jiǎn)單談?wù)凜++ 頭文件系列之(bitset)

    簡(jiǎn)單談?wù)凜++ 頭文件系列之(bitset)

    我們要使用bitset,首先需要包含頭文件bitset。和vector對(duì)象不一樣的是bitset類型對(duì)象的區(qū)別僅在其長(zhǎng)度而不在其類型。在定義bitset的時(shí)候,要明確bitset包含了多少位,須在尖括號(hào)內(nèi)給出它的長(zhǎng)度值。長(zhǎng)度值必須定義為整形字面值常量或是已用常量值初始化的整型的const對(duì)象
    2017-02-02
  • Visual Studio2000系列版本安裝OpenGL的圖文教程

    Visual Studio2000系列版本安裝OpenGL的圖文教程

    這篇文章主要介紹了Visual Studio2000系列版本安裝OpenGL的圖文教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • C++中訪問(wèn)字符串的三種方法總結(jié)

    C++中訪問(wèn)字符串的三種方法總結(jié)

    以下是對(duì)C++中訪問(wèn)字符串的三種方法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • C語(yǔ)言goto語(yǔ)句簡(jiǎn)單使用詳解

    C語(yǔ)言goto語(yǔ)句簡(jiǎn)單使用詳解

    C語(yǔ)言中提供了可以隨意濫用的 goto語(yǔ)句和標(biāo)記跳轉(zhuǎn)的標(biāo)號(hào),本文主要介紹了C語(yǔ)言goto語(yǔ)句簡(jiǎn)單使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++加密解密php代碼的方法

    C++加密解密php代碼的方法

    這篇文章主要介紹了C++加密解密php代碼的方法,實(shí)例分析了基于C++實(shí)現(xiàn)加密解密的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C++實(shí)現(xiàn)LeetCode(131.拆分回文串)

    C++實(shí)現(xiàn)LeetCode(131.拆分回文串)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(131.拆分回文串),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++ 結(jié)構(gòu)體初始化與賦值詳解

    C++ 結(jié)構(gòu)體初始化與賦值詳解

    本文主要介紹了C++ 結(jié)構(gòu)體初始化與賦值詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++深入探究二階構(gòu)造模式的原理與使用

    C++深入探究二階構(gòu)造模式的原理與使用

    C++中經(jīng)常會(huì)因?yàn)檎{(diào)用系統(tǒng)資源失敗導(dǎo)致出現(xiàn)BUG,所以在類調(diào)用構(gòu)造函數(shù)需要分配系統(tǒng)資源時(shí)會(huì)出現(xiàn)BUG,從而導(dǎo)致類對(duì)象雖然被創(chuàng)建,但是只是個(gè)半成品,為了避免這種情況需要使用二階構(gòu)造模式
    2022-04-04

最新評(píng)論