资源简介
第一次使用qt在C++上搭建,实现了图像扭曲,供大家学习一下啊
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define NODEBUG
using namespace std;
using namespace Eigen;
double radial(QPoint a QPoint b)
{
/*caculate the radial basic function */
double r = sqrt((a.x() - b.x())*(a.x() - b.x()) + (a.y() - b.y())*(a.y() - b.y()));
if (r == 0.0)
return 0;
return r*r*log(r) / log(10);
}
QPoint trans(QPoint cor VectorXd A VectorXd B vectorpoint)
{
RowVectorXd g(point.size() + 3);
int i = 0;
for (; i < point.size(); i++)
g[i] = radial(cor point[i]);
g[i] = 1;
g[i + 1] = cor.x();
g[i + 2] = cor.y();
double x = g*A;
double y = g*B;
if (x < 0)x = 0;
if (x > 482)x = 482;
if (y < 0)y = 0;
if (y > 467)y = 467;
return QPoint(x y);
}
int main(int argc char *argv[])
{
QCoreApplication a(argc argv);
QImage source;
source.load(“11.jpg“);
vectorpre_Point = { QPoint(209 175) QPoint(270 174) QPoint(228 222) QPoint(234 248) QPoint(261 244) QPoint(216 246) };
vectorlat_Point = { QPoint(209 175) QPoint(270 174) QPoint(228 222) QPoint(234 248) QPoint(261 251) QPoint(216 251) };
//the equation right vector
VectorXd u;
u = VectorXd::Zero(pre_Point.size() + 3);
VectorXd v;
v = VectorXd::Zero(pre_Point.size() + 3);
// the vector to be solved
VectorXd A(pre_Point.size() + 3);
VectorXd B(pre_Point.size() + 3);
//define a radial function matrix between control points
MatrixXd cof_f(pre_Point.size() pre_Point.size());
for (int i = 0; i < pre_Point.size(); i++)
for (int j = 0; j < pre_Point.size(); j++)
cof_f(i j) = radial(pre_Point[i] pre_Point[j]);
cout << cof_f << endl;
MatrixXd Gtem(pre_Point.size() 3);
for (int i = 0; i < pre_Point.size(); i++)
{
Gtem(i 0) = 1;
Gtem(i 1) = pre_Point[i].x();
Gtem(i 2) = pre_Point[i].y();
u[i] = lat_Point[i].x();
v[i] = lat_Point[i].y();
}
cout << Gtem << endl;
//the final coffient matrix;
MatrixXd G(pre_Point.size() + 3 pre_Point.size() + 3);
G.topLeftCorner(pre_Point.size() pre_Point.size()) = cof_f;
G.topRightCorner(pre_Point.size() 3) = Gtem;
G.bottomLeftCorner(3 pre_Point.size()) = Gtem.transpose();
G.bottomRightCorner(3 3) = MatrixXd::Zero(3 3);
cout << G << endl;
cout << u << endl;
cout << v << endl;
A = G.inverse()*u;
B = G.inverse()*v;
cout << A;
cout << B;
cout << G*A;
QPoint test = trans(QPoint(0 0) A B pre_Point);
cout << test.x() << “ “ << test.y();
/*assign the space for the cordinate and assign the value*/
/*
vector>cor;
cor.resize(source.height());
for (int i = 0; i < cor.size(); i++)
cor[i].resize(source.width());
for (int i = 0; i < source.height(); i++)
for (int j = 0; j < source.width(); j++)
cor[i][j] = QPoint(j i);
*/
/*
vector>res;
re
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-11-29 21:33 Warping - 副本\
目录 0 2017-11-29 21:33 Warping - 副本\Warping\
目录 0 2017-11-29 21:33 Warping - 副本\Warping\Debug\
文件 4836 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.log
目录 0 2017-11-29 21:33 Warping - 副本\Warping\Debug\Warping.tlog\
文件 63360 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\CL.read.1.tlog
文件 1608 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\CL.write.1.tlog
文件 155 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\Warping.lastbuildstate
文件 4070 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\cl.command.1.tlog
文件 1576 2017-11-29 21:12 Warping - 副本\Warping\Debug\Warping.tlog\custombuild.command.1.tlog
文件 404 2017-11-29 21:12 Warping - 副本\Warping\Debug\Warping.tlog\custombuild.read.1.tlog
文件 638 2017-11-29 21:12 Warping - 副本\Warping\Debug\Warping.tlog\custombuild.write.1.tlog
文件 2 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\li
文件 2 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\li
文件 2 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\li
文件 2 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\li
文件 2 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\li
文件 2 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\li
文件 2 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\li
文件 0 2017-11-29 21:29 Warping - 副本\Warping\Debug\Warping.tlog\unsuccessfulbuild
文件 3003785 2017-11-29 21:29 Warping - 副本\Warping\Debug\main.obj
文件 250870 2017-11-29 21:29 Warping - 副本\Warping\Debug\moc_warping.obj
文件 4718 2017-11-29 21:29 Warping - 副本\Warping\Debug\qrc_warping.obj
文件 5844992 2017-11-29 21:29 Warping - 副本\Warping\Debug\vc120.pdb
文件 280581 2017-11-29 21:29 Warping - 副本\Warping\Debug\warping.obj
目录 0 2017-11-29 21:33 Warping - 副本\Warping\GeneratedFiles\
目录 0 2017-11-29 21:33 Warping - 副本\Warping\GeneratedFiles\Debug\
文件 2659 2017-11-29 21:12 Warping - 副本\Warping\GeneratedFiles\Debug\moc_warping.cpp
目录 0 2017-11-29 22:46 Warping - 副本\Warping\GeneratedFiles\Release\
文件 1396 2017-11-29 20:51 Warping - 副本\Warping\GeneratedFiles\qrc_warping.cpp
文件 2227 2017-11-29 20:51 Warping - 副本\Warping\GeneratedFiles\ui_warping.h
............此处省略15个文件信息
- 上一篇:C语言控制台版贪吃蛇游戏.rar
- 下一篇:C C++与数据结构(王立柱)
相关资源
- QT C++ 算法 广搜BFS 最小步数解二阶魔
- MFC调用QT页面
- 基于QT的小型OA-ERP系统(源码1)
- 背单词软件源代码(使用C++和Qt库编写
- C++ QT面向对象课程设计 大作业
- mqtt-client MFC工程调用开源代码
- qt-everywhere-opensource-src-4.7.0.tar.gz
- 基于QT的打地鼠游戏
- C++ QT 俄罗斯方块源码
- QT5 编程入门.霍亚飞(带详细书签)
- 多功能计算器Qt版本
- 基于QT的局域网聊天系统.
- C++ GUI Qt 4编程第二版 经典教材适合
- qt画图板的实现
- Hands-On GUI Programming with C++ and Qt5
- Introduction to Design Patterns in C++ with Qt
- C++ GUI Qt 4编程第二版.pdf中文版,含目
- 图书馆管理系统-基于qt5.0 未使用数据
- 基于QT的C语言实现连连看游戏源码
- 讯飞windows端语音识别一套是基于QT设
- Qt实现仿QQ截图,带绘图,撤回功能!
- C++ GUI Qt 4编程第二版书+源代码
- C++GUI+Qt4编程中文(中文最新版)
- C++ GUI Qt4编程第二版(中文高清PDF扫描
- stm32 上下位机通信
- C++ GUI Programming with Qt 4 Second Edition.c
- C+++GUI Qt4编程 第二版 高清 中文文字版
- C++ Qt设计模式第2版中文版
- C++ Qt设计模式 第2版 中文版 PDF
- Qt/C++模仿酷狗音乐播放器执行文件
评论
共有 条评论