opencv實(shí)現(xiàn)視場(chǎng)轉(zhuǎn)換
本文實(shí)例為大家分享了opencv實(shí)現(xiàn)視場(chǎng)轉(zhuǎn)換的具體代碼,供大家參考,具體內(nèi)容如下
假設(shè)我們要實(shí)現(xiàn)QUEEN 這張片的視覺(jué)轉(zhuǎn)換,使圖像轉(zhuǎn)換之后猶如我們正面看過(guò)一樣
首先打開(kāi)圖形編輯器分別記錄這張卡片四個(gè)邊角的像素點(diǎn)
再利用原撲克的高寬比例 3.5:2.5 重新設(shè)置新視角的四邊角像素點(diǎn),具體程序如下所示:
#include <iostream> #include <opencv2/highgui.hpp> // 說(shuō)是說(shuō)gui 具體什么gui 不清楚 #include <opencv2/imgcodecs.hpp> // 圖像頭文件 #include <opencv2/imgproc.hpp> // 圖像處理頭文件 using namespace std; using namespace cv; float w = 250, h = 350; // 知道卡片的長(zhǎng)寬分別為 2.5 cm 和 3.5 cm 因此我們按照比例進(jìn)行放大所縮小即可 Mat matrix, imgWarp; int main() { string path = "resources/cards.jpg"; // 導(dǎo)入圖形的時(shí)候,先要在右邊點(diǎn)擊顯示所有文件?。?! Mat img = imread(path); // 在opencv 中所有的圖像信息都使用Mat /*Queen 卡片*/ Point2f src[4] = { {66,324},{338,279},{89,634},{404,571} }; // 原坐標(biāo)點(diǎn)的像素是使用圖片編輯器一個(gè)個(gè)試出來(lái)的 Point2f dst[4] = { {0.0f,0.0f},{w,0.0f},{0.0f,h},{w,h} }; matrix = getPerspectiveTransform(src, dst); // 輸入原位置比例及目標(biāo)位置比例,返回Mat類型參量 warpPerspective(img, imgWarp, matrix, Point(w, h)); // 根據(jù)上步獲得的參量進(jìn)行位置改變 /*在原圖像撲克四個(gè)頂膠繪制圓點(diǎn)**/ for (int i = 0; i < 4; i++) { circle(img, src[i], 10, Scalar(0, 0, 255),FILLED); } /* king 卡片 // Point2f 類即點(diǎn)的數(shù)據(jù)類型為 float Point2f src[4] = { {529,142},{771,190}, {405,395}, {674,457} }; Point2f dst[4] = { {0.0f,0.0f},{w,0.0f},{0.0f,h} ,{w,h} }; matrix = getPerspectiveTransform(src, dst); warpPerspective(img, imgWarp, matrix, Point(w, h));*/ imshow("Image", img); imshow("Image Warp", imgWarp); waitKey(0); // 延時(shí),0即相當(dāng)于無(wú)窮大 }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++ Qt開(kāi)發(fā)之CheckBox多選框組件的用法詳解
Qt是一個(gè)跨平臺(tái)C++圖形界面開(kāi)發(fā)庫(kù),利用Qt可以快速開(kāi)發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開(kāi)發(fā)極大的方便了開(kāi)發(fā)效率,本章將重點(diǎn)介紹CheckBox單行輸入框組件的使用方法,需要的朋友可以參考下2023-12-12C語(yǔ)言函數(shù)棧幀的創(chuàng)建與銷毀原理圖解
我們知道c語(yǔ)言中函數(shù)都是被調(diào)用的,main函數(shù)里面能調(diào)用其他函數(shù),其實(shí)main函數(shù)也是被別的函數(shù)調(diào)用的,下面通過(guò)本文給大家分享c語(yǔ)言函數(shù)棧幀的創(chuàng)建和銷毀過(guò)程,一起看看吧2022-05-05C到C++的升級(jí)關(guān)系及區(qū)別實(shí)例探究
這篇文章主要為大家介紹了C到C++的升級(jí)關(guān)系及區(qū)別實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01VC++植物大戰(zhàn)僵尸中文版修改器實(shí)現(xiàn)代碼
這篇文章主要介紹了VC++植物大戰(zhàn)僵尸中文版修改器實(shí)現(xiàn)代碼,可實(shí)現(xiàn)植物大戰(zhàn)僵尸中的無(wú)限陽(yáng)光與無(wú)冷卻時(shí)間功能,需要的朋友可以參考下2015-04-04利用ace的ACE_Task等類實(shí)現(xiàn)線程池的方法詳解
本篇文章是對(duì)利用ace的ACE_Task等類實(shí)現(xiàn)線程池的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05