该例子为用opencv实现替换广告牌,也是参考了其他人的代码,请见谅!主要是学习了代码中为了实现图像的缩放和旋转而寻找一个变换矩阵H,并应用该矩阵。
code:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>//findHomography()函数在该文件中
#include <iostream>
using namespace cv;
using namespace std;
struct userdata
{
Mat im;
vector<Point2f> points;
};
void mouseHandler(int event,int x,int y,int flags,void* data_ptr)
{
if (event == EVENT_LBUTTONDOWN)
{
userdata *data = ((userdata*)data_ptr);
circle(data->im, Point(x, y), 3, Scalar(0, 255, 255), 5, CV_AA);
imshow("Time_Square", data->im);
if (data->points.size() < 4)
{
data->points.push_back(Point2f(x, y));
}
}
}
int main()//虚拟广告牌
{
//读入一张新图像
Mat img_src = imread("pic/hp1.jpg");
Size size = img_src.size();
//创建一个点的不定数组
vector<Point2f> pts_src;
pt