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

OpenCV中图像变换

一、介绍

    transform():Transposes a matrix.

    perspectiveTransform():Performs the perspective matrix transformation of vectors.

    warpAffine():Applies an affine transformation to an image.

    warpPerspective():Applies a perspective transformation to an image.

二、transform

	Mat m23 = Mat::zeros(2, 3, CV_32FC1);  // 2*2  2*3m23.at<float>(0, 0) = 1.0;m23.at<float>(0, 2) = 2.0;m23.at<float>(1, 1) = 3.0;m23.at<float>(1, 2) = 4.0;cout << "m23 = " << endl << m23 << endl;// src.channel = m.cols 或 m.cols - 1// 当src.channel=m.cols - 1时,src增加一通道,值为1Mat src = Mat::zeros(4, 4, CV_8UC3);for (int i = 0; i < src.rows; i++){for (int j = 0; j < src.cols; j++){for (int k = 0; k < src.channels(); k++){src.at<Vec3b>(i, j)[k] = 2 * i + j + k;}}}cout << "src = " << endl << src << endl;Mat dst;cv::transform(src, dst, m23);  // dst.channel = m.rowscout << "dst = " << endl << dst << endl;

三、perspectiveTransform

	Mat m33 = Mat::zeros(3, 3, CV_32FC1);  // 3*3  4*4m33.at<float>(0, 0) = 1.0;m33.at<float>(0, 2) = 2.0;m33.at<float>(1, 1) = 3.0;m33.at<float>(1, 2) = 4.0;m33.at<float>(2, 2) = 2.0;cout << "m33 = " << endl << m33 << endl;// src.channel = m.cols - 1   src增加一个通道,值为1Mat src = Mat::zeros(2, 2, CV_32FC2);for (int i = 0; i < src.rows; i++){for (int j = 0; j < src.cols; j++){for (int k = 0; k < src.channels(); k++){src.at<Vec2f>(i, j)[k] = 2.0f * i + j + k;}}}cout << "src = " << endl << src << endl;// dst.size = src.size   dst.channels = src.channels// 3*3 * 3*1 = 3*1   4*4 * 4*1 = 4*1    m * v1 = v2// m33 * [x,y,1] = [x',y',w], 使用[x'/w, y'/w]作为dst的结果Mat dst;cv::perspectiveTransform(src, dst, m33);cout << "dst = " << endl << dst << endl;

四、warpAffine

	// 仿射变换矩阵 M 2*3 --- 旋转、平移、缩放cv::Point2f center = Point2f(img.cols / 2.0f, img.rows / 2.0f);  // 旋转中心double angle = 10.0;  // 旋转角度,逆时针为正double scale = 1.2;   // 缩放尺寸Mat M = cv::getRotationMatrix2D(center, angle, scale);int bound_w = (img.rows * fabs(sin(angle * CV_PI / 180)) + img.cols * fabs(cos(angle * CV_PI / 180))) * scale;int bound_h = (img.rows * fabs(cos(angle * CV_PI / 180)) + img.cols * fabs(sin(angle * CV_PI / 180))) * scale;M.at<double>(0, 2) += (bound_w - img.cols) / 2.0;  // x平移M.at<double>(1, 2) += (bound_h - img.rows) / 2.0;  // y平移Mat dst;cv::warpAffine(img, dst, M, cv::Size(bound_w, bound_h));

 

 

五、warpPerspective

	// 透视变换矩阵 M 3*3 --- 投影Point2f ptsF[4], ptsT[4];ptsF[0] = Point2f(163, 191);ptsF[1] = Point2f(735, 160);ptsF[2] = Point2f(872, 936);ptsF[3] = Point2f(112, 980);ptsT[0] = Point2f(163, 191);ptsT[1] = Point2f(735, 191);ptsT[2] = Point2f(735, 936);ptsT[3] = Point2f(163, 936);Mat M = cv::getPerspectiveTransform(ptsF, ptsT);Mat dst;cv::warpPerspective(img, dst, M, img.size());

 

 

相关文章:

OpenCV中图像变换

一、介绍 transform()&#xff1a;Transposes a matrix. perspectiveTransform()&#xff1a;Performs the perspective matrix transformation of vectors. warpAffine()&#xff1a;Applies an affine transformation to an image. warpPerspective()&#xff1a;Applies a p…...

wordpress发表文章时报错: rest_cannot_create,抱歉,您不能为此用户创建文章(已解决)

使用wordpress 的rest api发布文章&#xff0c;首先使用wp-json/jwt-auth/v1/token接口获取token&#xff0c;然后再使用/wp-json/wp/v2/posts 接口发表文章&#xff0c;但是使用axios请求时&#xff0c;却报错&#xff1a; 但是&#xff0c;我在postman上却是可以的&#xff0…...

数学建模学习(7):Matlab绘图

一、二维图像绘制 1.绘制曲线图 最基础的二维图形绘制方法&#xff1a;plot -plot命令自动打开一个图形窗口Figure&#xff1b; 用直线连接相邻两数据点来绘制图形 -根据图形坐标大小自动缩扩坐标轴&#xff0c;将数据标尺及单位标注自动加到两个坐标轴上&#xff0c;可自定…...

CSS中所有选择器详解

文章目录 一、基础选择器1.标签选择器2.类选择器3.id选择器4.通配符选择器 二、复合选择器1.交集选择器2.并集选择器 三、属性选择器1.[属性]2.[属性属性值]3.[属性^属性值]4.[属性$属性值]5.[属性*属性值] 四、关系选择器1.父亲>儿子2.祖先 后代3.兄弟4.兄~弟 五、伪类选择…...

STM32 低功耗学习

STM32 电源系统结构介绍 电源系统&#xff1a;VDDA供电区域、VDD供电区域、1.8V供电区域、后备供电区域。 器件的工作电压&#xff08;VDD&#xff09;2.0~3.6V 为了提高转换精度&#xff0c;给模拟外设独立供电。电压调节器为1.8V供电区域供电&#xff0c;且1.8V供电区域是电…...

HCIP--云计算题库 V5.0版本

在国家政策的支持下&#xff0c;我国云计算应用市场发展明显加快&#xff0c;越来越多的企业开始介入云产业&#xff0c;出现了大量的应用解决方案&#xff0c;云应用的成功案例逐渐丰富&#xff0c;用户了解和认可程度不断提高&#xff0c;云计算产业发展迎来了“黄金机遇期”…...

小白到运维工程师自学之路 第六十五集 (docker-compose)

一、概述 Docker Compose 的前身是 Fig&#xff0c;它是一个定义及运行多个 Docker 容器的工具。可以使用YAML文件来配置应用程序的服务。然后&#xff0c;使用单个命令&#xff0c;您可以创建并启动配置中的所有服务。Docker Compose 会通过解析容器间的依赖关系&#xff08;…...

量子机器学习

量子机器学习(QML)是结合量子计算和机器学习的交叉领域&#xff0c;旨在利用量子计算的优势来改进机器学习算法的性能。下面是一些有关量子机器学习的学习资源和技术应用&#xff1a; 学术论文和研究资料&#xff1a; ArXiv.org&#xff1a;在ArXiv的量子物理和机器学习类别中&…...

WEB集群——tomcat

1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8&#xff0c;配置服务启动脚本&#xff0c;部署jpress应用。 一、简述静态网页和动态网页的区别 &#xff08;1&#xff09;静态网页 1.什么是静态网页 请求响应信息&#xff0c;发…...

Vulnhub: blogger:1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.176 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.176 在80端口的/assets/fonts/目录下发现blog目录&#xff0c;访问后发现为wordpress 利用wpscan发现wordpress插件wpdisc…...

老版MFC工程迁移到VC2019编译EXE太大的问题

有个老版静态链接MFC库的MFC程序需要迁移到VC2019编译&#xff0c;直接用VC2019打开就会自动迁移过去&#xff0c;然后编译一下&#xff0c;生成的EXE大小将近3MB&#xff0c;老版的工程编译出来也就600多KB。 肯定哪里不对劲&#xff01; 好一顿研究之后发现原来默认会把MFC…...

Curve深陷安全事件,OKLink如何破局

出品&#xff5c;欧科云链研究院 作者&#xff5c;Matthew Lee 7月31号&#xff0c;Curve 在平台表示 Vyper 0.2.15 的稳定币池由于编译器的漏洞所以遭到攻击。具体因为重入锁功能的失效&#xff0c;所以黑客可以轻易发动重入攻击&#xff0c;即允许攻击者在单次交易中执行某…...

2023华数杯数学建模思路A题B题C题模型代码分析

目录 一.2023华数杯数学建模最新思路&#xff1a;比赛开始后第一时间更新 更新查看文末名片 二.往年华数杯赛题简介分析&#xff1a; 一.2023华数杯数学建模最新思路&#xff1a;比赛开始后第一时间更新 更新查看文末名片 二.往年华数杯赛题简介分析&#xff1a; 2022华数杯…...

el-table合并单元格

el-tabel数据结构 此处为this.rolePermitItemList 合并后的样式&#xff1a; el-table-column 需要添加property字段&#xff0c;属性值同props&#xff0c;用来判断需要合并的字段 <el-table :data"rolePermitItemList" style"width: calc(100% );margi…...

html5设置不缓存

<meta http-equiv"Cache-Control" content"no-cache, no-store, must-revalidate"> <meta http-equiv"Pragma" content"no-cache"> <meta http-equiv"Expires" content"0"> 使用meta元素的htt…...

kotlin 的函数参数

https://blog.csdn.net/yoonerloop/article/details/123241451 一、无参数的函数参数 1、回调 //定义 interface OnClickListener { fun onClick() } private fun setOnClickListener(listener: OnClickListener) { } //使用 setOnClickListener(object : OnClickLi…...

谈谈 Kafka 的幂等性 Producer

使用消息队列&#xff0c;我们肯定希望不丢消息&#xff0c;也就是消息队列组件&#xff0c;需要保证消息的可靠交付。消息交付的可靠性保障&#xff0c;有以下三种承诺&#xff1a; 最多一次&#xff08;at most once&#xff09;&#xff1a;消息可能会丢失&#xff0c;但绝…...

Doris(三)-集群部署3个FE+3个BE

前置 1&#xff09;配置java环境 1st 解压jdk包 unzip jdk1.8.0_171-amd64.zip 2nd 配置环境变量 vim /etc/profile#文末添加JAVA_HOME/data/jdk1.8.0_171-amd64 PATH$JAVA_HOME/bin:$PATHexport PATH JAVA_HOME3rd 启用配置 source /etc/profile 4th 验证 java -versi…...

js沙箱逃逸

目录 一、什么是沙箱(sandbox) 二、沙箱技术的实现 & node.js 2.1简单沙箱程序示例 2.2this.tostring S1&#xff1a; S2&#xff1a; 三、arguments.callee.caller 一、什么是沙箱(sandbox) 在计算机安全性方面&#xff0c;沙箱&#xff08;沙盒、sanbox&#xff…...

振弦传感器信号转换器应用山体滑坡安全监测

振弦传感器信号转换器应用山体滑坡安全监测 随着人类文明的进步&#xff0c;自然灾害对人们的生活和财产安全造成的威胁也越来越大。山体滑坡作为自然灾害中的一种&#xff0c;给人们的生活和财产安全带来了极大的威胁。因此&#xff0c;进行山体滑坡的安全监测显得尤为重要。振…...

学C语言别乱选教程!这7本实测好用

一、学C语言的人&#xff0c;90%都选错了教程&#xff01;难道你未曾怀揣着满怀的热忱渴望去学习C语言么&#xff0c;然而却对着荧屏中那些晦涩难懂的教程而毫无头绪&#xff0c;不知道该如何着手么&#xff1f;是不是在全网各处去寻找相关资料&#xff0c;逐一浏览过后&#x…...

造相-Z-Image GitHub Actions集成:CI/CD自动化图像生成方案

造相-Z-Image GitHub Actions集成&#xff1a;CI/CD自动化图像生成方案 1. 引言 技术文档维护过程中&#xff0c;插图制作往往是最耗时耗力的环节之一。传统方式需要设计师手动创作&#xff0c;或者开发者手动调用图像生成API&#xff0c;效率低下且难以保持一致性。想象一下…...

ConvNeXt 系列改进:ConvNeXt 用于视频行为识别:3D ConvNeXt 改进与 Kinetics 实验

引言:当 ConvNeXt 遇上视频 2022年,Facebook AI Research提出的ConvNeXt在计算机视觉领域投下了一颗重磅炸弹。它以纯卷积结构达到了87.8%的ImageNet Top-1精度,在COCO检测和ADE20K分割任务上甚至超越了当时风头正劲的Swin Transformer,证明了“卷积并未死去,只是需要被现…...

开发者冥想指南:提升代码质量的秘密

——软件测试从业者的认知升级与效能革命一、代码质量的双重困境与测试者的核心挑战在软件交付链条中&#xff0c;测试从业者肩负着质量守门人的重任&#xff0c;却常陷入双重困境&#xff1a;外部压力&#xff1a;版本迭代加速、需求频繁变更&#xff0c;导致测试深度被压缩内…...

TexLive极简安装法:5分钟搞定基础版+中英文支持(附磁盘空间不足解决方案)

TexLive极简安装法&#xff1a;5分钟搞定基础版中英文支持&#xff08;附磁盘空间不足解决方案&#xff09; 在学术写作和科研文档排版领域&#xff0c;LaTeX以其专业的排版质量和稳定性成为不可替代的工具。然而&#xff0c;传统的TexLive完整安装往往需要占用6GB以上的磁盘空…...

模型训练中的缩放法则:原理与实战应用全解析

一、核心原理&#xff1a;从经验观察到数学规律1.1 基本定义缩放法则 (Scaling Laws) 是深度学习领域的经验规律&#xff0c;定量描述模型性能&#xff08;通常以测试集损失 Loss 或困惑度 Perplexity 衡量&#xff09;与三大核心资源&#xff08;模型参数量 N、训练数据量 D、…...

AI 编程助手(Trae)全局开发规范调教实录

AI 编程助手&#xff08;Trae&#xff09;全局开发规范调教实录背景 在使用 AI 编程助手&#xff08;如 Trae&#xff09;进行日常开发时&#xff0c;经常会遇到 AI 缺乏工程思维、盲目猜测环境、破坏目录规范、以及过度消耗 Token 等痛点。为了将 AI 从一个“莽撞的实习生”调…...

5.3 风险模型介入:利用Barra CNE5进行因子纯化

5.3 风险模型介入&#xff1a;利用Barra CNE5进行因子纯化 一、引言&#xff1a;为什么需要“纯净”的Alpha&#xff1f; 在上一节中&#xff0c;我们学会了如何将几十个相关因子合成为少数几个复合因子。但这还不够。当你构建的策略在回测中表现优异时&#xff0c;必须回答一…...

Linux环境下Nacos 2.4.0安全部署与密码重置实战指南

1. 环境准备与基础配置 在Linux系统上部署Nacos 2.4.0之前&#xff0c;需要先确保基础环境就绪。我最近在阿里云ECS上部署时发现&#xff0c;很多安全问题都源于环境配置不当。这里分享几个关键检查点&#xff1a; 首先用java -version确认JDK版本。实测发现JDK17比JDK8性能提…...

JPEGsnoop:从像素到元数据的深度图像解码技术全解析

JPEGsnoop&#xff1a;从像素到元数据的深度图像解码技术全解析 【免费下载链接】JPEGsnoop JPEGsnoop: JPEG decoder and detailed analysis 项目地址: https://gitcode.com/gh_mirrors/jp/JPEGsnoop 在数字图像处理领域&#xff0c;JPEG格式以其高效的压缩算法和广泛的…...