当前位置: 首页 > news >正文

建设银行个人网银网站龙岩新罗区

建设银行个人网银网站,龙岩新罗区,wordpress改成自己网站,学做网站教学百度网盘0.概述 图像变换的基本原理都是找到原图和目标图的像素位置的映射关系#xff0c;这个可以用坐标系来思考#xff0c;在opencv中#xff0c; 图像的坐标系是从左上角开始(0,0)#xff0c;向右是x增加方向(cols)#xff0c;向下时y增加方向(rows)。 普通坐标关系#xff1… 0.概述 图像变换的基本原理都是找到原图和目标图的像素位置的映射关系这个可以用坐标系来思考在opencv中 图像的坐标系是从左上角开始(0,0)向右是x增加方向(cols)向下时y增加方向(rows)。 普通坐标关系 图像坐标关系 1.图像的平移 图像的平移是比较简单的映射关系对于原图像的某个像素点位置(X0,Y0)向右平移100个像素的话变换之后的目标像素点位置(X X0100,Y)然后用原图像的像素值填充目标位置就可因此我们需要将这种映射关系转换一下方便获得原图像素值也就是X0 X-100这里X是已知的。 具体代码如下 void translation(cv::Mat src, cv::Mat dst, int dx, int dy) {const int rows src.rows; // 获得原图的高度yconst int cols src.cols; // 获得原图的宽度xdst.create(rows, cols, src.type()); // 按照原图大小和格式创建一个空白图Vec3b *p; for (int Y 0; Y rows; Y) // 按行扫描{p dst.ptrVec3b(Y);for (int X 0; X cols; X){int X0 X - dx; // 逆映射关系求得原图的位置int Y0 Y - dy;if (X0 0 Y0 0 X0 cols Y0 rows) // 防止越界{p[X] src.ptrVec3b(Y0)[X0]; // 将原图的像素值赋给目标位置}}}} 2.图像的缩放 这里暂时只贴出opencv的缩放接口 void resize(InputArray src, //输入图像 OutputArray dst, // 输出图像 Size dsize, // 指定的输出图像的大小 double fx0, // 横向缩放比例 double fy0, // 纵向缩放比例 int interpolationINTER_LINEAR // 指定插值方式); 3.图像的旋转 图像旋转矩阵的原理可以参考这里 基本映射关系 我们只需要根据这个映射关系写就好其中的dx和dy主要用来计算旋转中心的如果都是0的话图像就是围绕 图像坐标(0,0)来旋转该公式中的W和H指的是目标图像的宽度和高度。 代码 void rotation(cv::Mat src, cv::Mat dst, int angle, cv::Point center cv::Point(0, 0)) {// 计算角度的正余弦float sint sin(angle*3.141592653 / 180); float cost cos(angle*3.141592653 / 180);const int rows src.rows; // rows H (Y---)const int cols src.cols; // cols W (X---)// 计算旋转中心的偏移float centerxScale (float)center.x / cols; float centeryScale (float)center.y / rows;float dx -centerxScale * cols*cost - centeryScale * rows*sint centerxScale * cols; // 根据映射公式float dy centerxScale * cols*sint - centeryScale * rows*cost centeryScale * rows;dst.create(rows, cols, src.type());Vec3b *p;for (int Y 0; Y rows; Y){p dst.ptrVec3b(Y);for (int X 0; X cols; X){int X0 X*cost Y*sint dx; // 根据映射公式int Y0 -X*sint Y*cost dy;if (X0 0 Y0 0 X0 cols Y0 rows){p[X] src.ptrVec3b(Y0)[X0];}}}} 4.图像的翻转 这里也只贴opencv的接口 void flip(InputArray src, // 原图像OutputArray dst, //目标图像 int flipCode // 翻转方式1水平0垂直-1水平垂直 );5.图像的错切 图像的错切效果可以想象伸缩门中的菱形的变化 不过对于x方向的错切y方向的高度并不会变化。 贴代码 void shear(cv::Mat src, cv::Mat dst, float dx 0,float dy 0) // dx,dy为错切率 {const int rows src.rows; // rows H (Y---)const int cols src.cols; // cols W (X---)dst.create(rows, cols, src.type());Vec3b *p;for (int Y 0; Y rows; Y){p dst.ptrVec3b(Y);for (int X 0; X cols; X){int X0 X dx*Y;int Y0 Y dy*X;if (X0 0 Y0 0 X0 cols Y0 rows){ p[X] src.ptrVec3b(Y0)[X0];}}}} 效果图dx 0.1,dy0.1 6.图像的仿射变换 图像的仿射变换其实就是以上基本变换的组合仿射变换可以维持原图的点线关系例如平行和比例等。 示例代码 #include opencv.hpp #include iostream #include imgproc.hppusing namespace std; using namespace cv;int main() {Mat img imread(img.jpg);Mat dst;Point2f affinePoints0[3] { Point2f(100, 50), Point2f(100, 390), Point2f(600, 50) }; // 选取原图像的映射点Point2f affinePoints1[3] { Point2f(200, 100), Point2f(200, 300), Point2f(500, 50) }; // 选取目标图像的映射点Mat trans getAffineTransform(affinePoints0, affinePoints1); // 获得变换矩阵warpAffine(img, dst, trans, Size(img.cols, img.rows)); // 仿射变换for (int i 0; i 3; i) // 描点{circle(img, affinePoints0[i], 5, Scalar(0, 255, 255), -1);circle(dst, affinePoints1[i], 5, Scalar(0, 255, 255), -1);}imshow(src, img);imshow(dst, dst);waitKey(0);return 0; } 效果图 7.图像的透视变换 图像的透视变换和放射变换类似不过选取的映射点为四个。 示例代码 #include opencv.hpp #include iostream #include imgproc.hppusing namespace std; using namespace cv;int main() {Mat img imread(img.jpg);Mat dst;Point2f perspectivePoints0[4] { Point2f(100, 50), Point2f(100, 390), Point2f(600, 50),Point2f(600, 800) }; // 选取原图像的映射点Point2f perspectivePoints1[4] { Point2f(200, 100), Point2f(200, 300), Point2f(500, 50), Point2f(600, 800) }; // 选取目标图像的映射点Mat trans getPerspectiveTransform(perspectivePoints0, perspectivePoints1); // 获得变换矩阵warpPerspective(img, dst, trans, Size(img.cols, img.rows)); // 透视变换for (int i 0; i 4; i) // 描点{circle(img, perspectivePoints0[i], 5, Scalar(0, 255, 255), -1);circle(dst, perspectivePoints1[i], 5, Scalar(0, 255, 255), -1);}imshow(src, img);imshow(dst, dst);waitKey(0);return 0; } 效果图额。 转载于:https://www.cnblogs.com/whlook/p/7302416.html
http://www.yutouwan.com/news/492406/

相关文章:

  • 织梦系统网站搭建教程淮南查查论坛
  • 怎么建设一个公司网站做文案图片上什么网站
  • 青岛网站建设方案深圳网络推广深圳网
  • net服装网站建设企业邮箱app下载
  • 网站开发自我介绍代码什么是软文推广
  • 做T恤卖网站网站项目设计具体方案
  • 可以做笔试面试题的网站网页编辑器安卓
  • 太原php网站开发开发平台价格
  • 为耐克做品牌推广的网站仿站工具下载后咋做网站
  • 西宁城东区建设局公租房网站wordpress通知邮件美化
  • qq空间网站wordpress数据库忘记了
  • 网站建设开发流程做网站是用wordpress还是DW
  • php网站投票源码公司网站换服务器怎么做
  • 福州网站运营网上注册公司官网入口
  • 提供信息门户网站制作专业网站建设设计服务
  • 企业网站网站建设公司安平有做网站推广的吗
  • 做的网站太大柏乡县建设局网站
  • 手机免费制作pptseo与网站优化 pdf
  • 成都网站改版公司尚易企业邮箱
  • 学院网站建设工作会议个人二级网站怎么做
  • 电子商务网站建设文档wordpress柚子皮
  • 请人做网站需要注意什么条件公司建设网站费用会计怎么记
  • 专业做网站技术江西响应式网页建设
  • 天津本地网站免费行情软件app下载大全
  • 大兴网站建设多少钱东莞市建网站
  • 大连开发网站工程机械网站模板
  • 求做图的网站网站外链坏处
  • 深圳网站搭建多少钱wordpress英文博客主题
  • 中国建设银行网站会员可以改名建行个人网上登录入口
  • 株洲网站建设方案咨询规划设计咨询公司