国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

初學(xué)opencv c++學(xué)習(xí)筆記(五)透視變換--warpPerspective()

這篇具有很好參考價值的文章主要介紹了初學(xué)opencv c++學(xué)習(xí)筆記(五)透視變換--warpPerspective()。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這篇博客將用簡單的口吻談一談透視變換是啥以及如何操作~

? ?但是這篇博客,只要你看了,我相信會有收獲~~~~~~~

~~~~~~~~~??

~~~~~~~~~

目錄

一、透視變換介紹

1.基礎(chǔ)介紹:

二、透視變換apl介紹----?warpPerspective()

1.官方定義

2.參數(shù)解釋

三、搭配apl介紹----?getPerspectiveTransform()

1.官方定義

2.參數(shù)解釋

四、代碼實戰(zhàn)

1.任務(wù)交代

2.營救修狗

拯救思路:

整體戰(zhàn)況即結(jié)果展示

總結(jié)




提示:以下是本篇文章正文內(nèi)容,下面案例可供參考


一、透視變換介紹

1.基礎(chǔ)介紹:

????????透視變換屬于圖像的幾何變換

????????生活中透視變換是一門普遍的技術(shù),微信的“掃一掃”就運用到這個技術(shù)。我們上傳的二維碼圖片往往是在空間上是傾斜的,就是二維碼所在平面與設(shè)備的平面不平行,這就需要透射變換把二維碼弄成板板正正的亞子。

? ? ? ? 再比如拍照就能文本翻譯的技術(shù)也需要透視變換。

實現(xiàn):

? ? ? ? 透視變換的實現(xiàn),可以想象成是投影,投影中心照到原圖像平面,投影到投影平面上,投影平面上的圖像就是投影的結(jié)果。

圖示:

c++warpperspective,opencv,人工智能,c++,計算機視覺


二、透視變換apl介紹----?warpPerspective()

1.官方定義

void warpPerspective( InputArray src, OutputArray dst,
                                   InputArray M, Size dsize,
                                   int flags = INTER_LINEAR,
                                   int borderMode = BORDER_CONSTANT,
                                   const Scalar& borderValue = Scalar());

2.參數(shù)解釋

(1)? src? :? 輸入的原圖像。

(2)? dst? :? ?輸出的結(jié)果圖。類型如src,大小為dsize.

(3)?M? :? 3 x 3的變換矩陣,Mat 類型。

? M 需要使用getPerspectiveTransform()函數(shù)獲取,該函數(shù)放詳細介紹放在下一個標題供大家食用。

(4)? dsize? :? ? 輸出圖像的大小。

dsize參數(shù)形式:Size ( imgsrc.cols, imgdst.rows )?

(5)? flag? :插值方法的組合。我們可以通過官方定義看到有默認值,一般不用管它。

(6)borderMode? :? 像素外推方法。

(7)borderValue? :? 外邊框粗值 。在恒定邊框的情況下使用的值;默認情況下,它等于 0。

最后三個參數(shù)都有默認值,不用管。


三、搭配apl介紹----?getPerspectiveTransform()

1.官方定義

Mat getPerspectiveTransform(const Point2f src[], const Point2f dst[], int solveMethod = DECOMP_LU);

該函數(shù)通過原圖像和結(jié)果圖像的四個頂點坐標,從四對對應(yīng)點計算透視變換。

計算3×3透視矩陣變換。

2.參數(shù)解釋

(1)src[ ]? :原圖像的四個頂點坐標所構(gòu)成的向量(數(shù)組)。

(2)dsr[ ]? :結(jié)果圖像的四個頂點坐標所構(gòu)成的向量(數(shù)組)。

代碼定義:

????????Point2f src[4]={Point2f(,),Point2f(,),Point2f(,),Point2f(,)};

????????Point2f dst[4]={? Point2f(0,0)? ,? Point2f(dsize().width,0),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??Point2f(0,dsize().height?),??Point2f (dsize().width?,dsize().height )? ?};

(3)solveMethod? : 求解方法傳遞給cv::solve的方法(分解類型) 該參數(shù)一般不需要調(diào)整,使用默認值即可。


四、代碼實戰(zhàn)

1.任務(wù)交代

現(xiàn)在組織下來了任務(wù),修狗在一次戰(zhàn)斗中了魔法變成下圖的慘樣,快使用你的力量幫助修狗恢復(fù)原樣。

c++warpperspective,opencv,人工智能,c++,計算機視覺

2.營救修狗

---使用透視變換---

拯救思路:

(1)獲取頂點坐標

使用透視變換的函數(shù),最關(guān)鍵的是要獲取圖像的頂點坐標。

借助畫圖c++warpperspective,opencv,人工智能,c++,計算機視覺

?打開畫圖

c++warpperspective,opencv,人工智能,c++,計算機視覺

左下角就會出現(xiàn)鼠標對應(yīng)位置的坐標

?c++warpperspective,opencv,人工智能,c++,計算機視覺

?原圖像的四個頂點坐標就碼好了

   Point2f src[4] = {Point2f(160,300),Point2f(931,253),Point2f(105,787),Point2f(1000,859)};

?結(jié)果圖像的四個頂點坐標根據(jù)自己想要的來

圖像大小比較大,我把結(jié)果圖像的大小設(shè)置小一些

    Point2f dst[4] = {Point2f(0,0),Point2f(380,0),Point2f(0,360),Point2f(380,360)};

(2)使用 getPerspectiveTransform()獲取M(M是warpPerspective()的參數(shù))

直接用函數(shù)

    Mat TransImage = getPerspectiveTransform(src, dst);

?TransImage即M,我們要的3 x 3轉(zhuǎn)換矩陣。

(3)最后一步,透視函數(shù)上場!?

dsize參數(shù)的設(shè)置:

????????dst的大小默認是src的大小,dsize如下面的代碼設(shè)定的話在輸出窗口(輸出窗口默認為src大?。幸淮笃谏珔^(qū)域。

????????設(shè)置成Size(380,360)就只有我們想要的圖片區(qū)域。

????????但是設(shè)置下方代碼方便調(diào)換。?

    warpPerspective(imgsrc, imgdst, TransImage, Size(imgdst.cols, imgdst.rows));

整體戰(zhàn)況即結(jié)果展示

#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;
int main()
{
    Mat imgsrc = imread("C:/r/dog.jpg");//讀取圖像
    Mat imgdst; //定義結(jié)果圖,用于存放透視變換的結(jié)果

    Point2f src[4] = {Point2f(160,300),Point2f(931,253),Point2f(105,787),Point2f(1000,859)};
    Point2f dst[4] = {Point2f(0,0),Point2f(380,0),Point2f(0,360),Point2f(380,360)};

    Mat TransImage = getPerspectiveTransform(src, dst);//獲取變換矩陣
    warpPerspective(imgsrc, imgdst, TransImage, Size(380, 360));//進行透視變換

    imshow("原圖",imgsrc);//展示原圖和結(jié)果圖
    imshow("目標圖像", imgdst);
    waitKey(0);
    return 0;
}

?c++warpperspective,opencv,人工智能,c++,計算機視覺

?當當!拯救成功!


總結(jié)

這篇博客到這就結(jié)束了!謝謝看到這的小可愛!

如有錯誤,請指正!文章來源地址http://www.zghlxwxcb.cn/news/detail-812518.html

到了這里,關(guān)于初學(xué)opencv c++學(xué)習(xí)筆記(五)透視變換--warpPerspective()的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Opencv-C++筆記 (16) : 幾何變換 (圖像的翻轉(zhuǎn)(鏡像),平移,旋轉(zhuǎn),仿射,透視變換)

    Opencv-C++筆記 (16) : 幾何變換 (圖像的翻轉(zhuǎn)(鏡像),平移,旋轉(zhuǎn),仿射,透視變換)

    圖像旋轉(zhuǎn)是指圖像按照某個位置轉(zhuǎn)動一定的角度的過程,旋轉(zhuǎn)中圖像仍保持著原始尺寸。圖像旋轉(zhuǎn)后圖像水平對稱軸、垂直對稱軸及中心坐標原點都可能會發(fā)生變換,因此需要對圖像旋轉(zhuǎn)中的坐標進行相應(yīng)轉(zhuǎn)換。 假設(shè)有一個點:P(x,y),它在繞原點 O(0,0) 旋轉(zhuǎn) β 后,被轉(zhuǎn)換成

    2024年02月14日
    瀏覽(109)
  • 初學(xué)opencv c++學(xué)習(xí)筆記(二)圖像空間色彩轉(zhuǎn)換cvtColor()

    初學(xué)opencv c++學(xué)習(xí)筆記(二)圖像空間色彩轉(zhuǎn)換cvtColor()

    對圖像的色彩轉(zhuǎn)換用到cvtColor()函數(shù),本章將對此其用法進行解析。 目錄 一、色彩空間轉(zhuǎn)換 官方定義 ?函數(shù)參數(shù)解釋 代碼演示 RGB——HSV? RGB——GRAY ?BGR——RGB 總結(jié) 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 APL:cvtColor() 1. src (source):輸入的源圖像。為矩陣形式。

    2024年02月05日
    瀏覽(28)
  • OpenCV 實現(xiàn)透視變換

    OpenCV 實現(xiàn)透視變換

    仿射變換(affine transform)與透視變換(perspective transform)在圖像還原、圖像局部變化處理方面有重要意義。通常,在2D平面中,仿射變換的應(yīng)用較多,而在3D平面中,透視變換又有了自己的一席之地。兩種變換原理相似,結(jié)果也類似,可針對不同的場合使用適當?shù)淖儞Q。 仿射變換和

    2024年02月04日
    瀏覽(26)
  • 【opencv】:圖像的透視變換

    【opencv】:圖像的透視變換

    仿射變換(Affine Transformation或 Affine Map) , 又稱為仿射映射, 是指在幾何中, 圖像進行從一個向量空間進行一次線性變換和一次平移, 變換為到另一個向量空間的過程。我們常說的仿射變換是透視變換的一個特例。 以上便是透視變換的原理圖,即將源圖像通過投影映射,

    2024年02月15日
    瀏覽(21)
  • 用OpenCV進行透視變換

    用OpenCV進行透視變換

    歡迎回來!今天我們將焦點聚焦在我在圖像處理中最喜歡的話題之一——透視變換。使用該技術(shù),可以靈活方便的實現(xiàn)各種各樣好玩的特效。 閑話少說,我們直接開始吧! 我們首先展開對單應(yīng)矩陣的深入研究。作為圖像處理的基本工具,它在捕捉圖像中的幾何變換方面發(fā)揮

    2024年02月10日
    瀏覽(18)
  • OpenCV庫進行圖像旋轉(zhuǎn)、仿射變換和透視變換
  • OpenCV利用透視變換矯正圖像

    OpenCV利用透視變換矯正圖像

    案例:使用OpenCV將一張折射的圖片給矯正過來 實現(xiàn)步驟: 1.載入圖像 2.圖像灰度化 3.二值分割 4.形態(tài)學(xué)操作去除噪點 5.輪廓發(fā)現(xiàn) 6.使用霍夫直線檢測,檢測上下左右四條直線(有可能是多條,但是無所謂) 7.繪制出直線 8.尋找與定位上下左右是條直線 9.擬合四條直線方程 1

    2024年02月06日
    瀏覽(20)
  • 使用opencv對圖像進行透視變換

    使用opencv對圖像進行透視變換

    一.什么是透視變換 透視變換就是透視變換(Perspective Transformation)是指利用透視中心、像點、目標點三點共線的條件,按透視旋轉(zhuǎn)定律使承影面(透視面)繞跡線(透視軸)旋轉(zhuǎn)某一角度,破壞原有的投影光線束,仍能保持承影面上投影幾何圖形不變的變換。簡單的來說就是

    2024年02月08日
    瀏覽(20)
  • 【Python】【OpenCV】OCR識別(二)——透視變換

    【Python】【OpenCV】OCR識別(二)——透視變換

    對于OCR技術(shù)在處理有角度有偏差的圖像時是比較困難的,而水平的圖像使用OCR識別準確度會高很多,因為文本通常是水平排列的,而OCR算法一般會假設(shè)文本是水平的。 針對上述情況,所以我們在處理有角度的圖象時,需要將圖像“擺正”,將使用到getPerspectiveTransform方法和

    2024年02月03日
    瀏覽(25)
  • Python中OpenCV透視變換恢復(fù)扭曲圖像

    Python中OpenCV透視變換恢復(fù)扭曲圖像

    在處理圖像問題時,經(jīng)常會遇到將要處理的目標的位置是斜的,需要使用透視變換進行矯正。如下圖,該圖片中左邊的目標是扭曲傾斜拍攝的,那么任務(wù)就是將其矯正過來,如下圖右圖所示。 前提1:這里假設(shè)我已經(jīng)知道四個點坐標(可用深度學(xué)習(xí)方法檢測/分割)和目標寬高

    2024年01月20日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包