單應性矩陣的應用 替代廣告牌

2021-07-27 14:31:32 字數 2423 閱讀 8722

最近看了篇文章,講述的是單應性矩陣homography matrix的理解與應用,嘗試著執行文章中的**時發現總是報異常。目前水平尚屬於初級階段的我花了乙個下午的時間,還請了外援,現在終於解決了。

遇到的問題如下圖所示。

將點由point改為point2f後這個問題得到了解決。

其他一些可能由於原作者手誤敲錯**而引起的問題這裡就不再提出。下面是改正後可執行的**。

#include 

#include

#include

using

namespace cv;

using

namespace

std;

void main()

namedwindow("input image", cv_window_freeratio);

imshow("input image", src);

//讀入用來替代廣告圖中某一廣告牌的

//用來替換某一廣告牌的四角座標

src_corners[0]=point2f(0.0, 0.0);

src_corners[1]=point2f(replaceimg.cols, 0.0);

src_corners[2]=point2f(0.0, replaceimg.rows);

src_corners[3]=point2f(replaceimg.cols, replaceimg.rows);

//廣告圖中被替代廣告牌的四角座標

dst_corners[0] = point2f(786, 517);

dst_corners[1] = point2f(1018, 395);

dst_corners[2] = point2f(799, 658);

dst_corners[3] = point2f(1053, 605);

//計算單應性矩陣

mat h = findhomography(src_corners, dst_corners);

//將用來替換廣告牌的影象進行形狀視角變換

mat output_img;

warpperspective(replaceimg, output_img, h, src.size());

//求掩膜

mat m1 = mat::zeros(replaceimg.size(), cv_8uc1);

m1 = scalar(255);

mat mask_output;

warpperspective(m1, mask_output, h, src.size());

namedwindow("mask result", cv_window_freeratio);

imshow("mask result", mask_output);

//得到最終的結果並儲存

mat result1;

add(output_img, output_img, result1, mask_output);

mat result2;

bitwise_not(mask_output, mask_output);

add(src, result1, result2,mask_output);

mat result;

add(output_img, result2, result);

namedwindow("final result", cv_window_freeratio);

imshow("final result", result);

imwrite("result.png", result);

waitkey(0);

}

輸入的廣告圖如下:

被用來替換廣告圖中某一廣告牌的影象如下:

最終的替換效果圖如下:

單應性矩陣和仿射變換 單應性矩陣自適應估計方法

單應性矩陣自適應估計方法 許金山,王一江,程 徐,李松,陳勝勇 摘要 摘要 如何從初始匹配點集中估計出精確的單應性矩陣,有效地剔 除誤匹配,一直以來都是視覺領域研究的重點和難點,也是實際相關技術應用 中最為關鍵的一步。通過將特徵點對相似度概念應用於 lmeds 的樣本選取過 程,提出了一種新的單應性...

Homography單應性矩陣程式實現

單應性矩陣重要應用在求解兩幅影象的對映關係,或者影象座標與世界座標的對映關係。這裡主要在張正有相機標定法的基礎上,求解h。具體理論為請點 相機標定法 張正有 opencv程式實現 std vector pt1 4 std vector pt2 4 pt1 0 point2f 0,0 pt1 1 po...

單應性矩陣H和基礎矩陣F

一 單應性矩陣 單應性矩陣描述的是共麵點在兩個相機檢視下的畫素點的約束關係,描述的是點與點之間的約束關係,使用單應矩陣可以找到像點在另一幅影象上對應點的確切位置。即當已知兩幅影象間的單應性矩陣h時,可以通過 特殊情況1 當相機只純旋轉,不平移時,即使不共面,也可以使用單應性來描述,因為此時基礎矩陣f...