23-像素重映射

[OpenCV] cv.remap() 重映射学习笔记/map1 map2易混点 学习remap的时候发现map1和map2的参数跟我的直观理解略有差别,在次记录一下。 一、背景 把一幅图像内的像素点放置到另外一幅图像内的指定位置,这个过程称为重映射。OpenCV 提供了多种重映射方式,但是我们有时会希望使用自定义的方式来完成重映射。OpenCV 内的重映射函数 cv2.remap()提供了更方便、更自由的映射方式,其语法格式如下:dst=cv2.remap(src,map1,map2,interpolation[,borderMode[,borderValue]])式中: ● dst 阅读详情

像素重映射(cv::remap)

1、像素重映射概念;
2、API介绍;
3、代码演示;

像素重映射

1、像素重映射:把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像; 映射的称为功能函数,数学原理如下:
在这里插入图片描述
2、demo: 对称映射
在这里插入图片描述

相关API

1、API : cv::remap();
参数说明:
src–输入图像,可以是3通道或单通道
dst–输出图像
map1–x映射表,要求位数必须是CV_32FC1/CV_32FC2;
map2–y映射表,
interpolation : 插值,常见的有线性插值或双线性,立方插值等等;一般选INTER_LINEAR(线性插值);
borderMode: 设置图像边缘处理方式;
borderValue : 设置使用什么颜色填充;(一般用不上)

在这里插入图片描述

Code

1、一种与键盘交互模板:

	int  index = 0;
	int c =0;
	while(true)
	{
			c = waitkey(500);  //500ms获取一次键盘输入
			index = c %4;
			if((char)c == 27)
			{
				break;
			}	
	}
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;

Mat src, dst, map_x, map_y;

int index = 0;

void update_map(void);

int main(int argc, char** argv)
{
   //原先写的Mat src = ....;导致全局变量被隐藏!!!!
	src = imread("C:\\Users\\hello\\Desktop\\18.jpg");
	if (!src.data)
	{
		cout << "could not load the image..." << endl;
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

	//首先建立两个映射表
	map_x.create(src.size(), CV_32FC1);  //创建和原图一样大,数据类型为CV_32FC1(32位单通道)的图像
	map_y.create(src.size(), CV_32FC1);

	int c = 0;
	while (true)
	{
		c = waitKey(500);  //500ms检测一次键值
		
		if ((char)c == 27)
		{
			break;
		}
		index = c % 4;
		update_map();
		remap(src, dst, map_x, map_y, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 255, 255));
		imshow("remap image", dst);
	}
	
	return 0;
}

void update_map(void)
{
	for (int row = 0; row < src.rows; row++)
	{
		for (int col = 0; col < src.cols; col++)
		{
			switch (index)
			{
			case 0:
				//只有在规定范围内的像素有效(缩小一半)
				if ((col > src.cols * 0.25) && (col <= src.cols * 0.75) && (row > src.rows * 0.25) && (row <= src.rows * 0.75))
				{
					map_x.at<float>(row, col) = 2 * (col - (src.cols*0.25)); //x方向的映射
					map_y.at<float>(row, col) = 2 * (row - (src.rows*0.25));
				}
				else
				{
					map_x.at<float>(row, col) = 0;
					map_y.at<float>(row, col) = 0;
				}
				break;
			case 1:
				map_x.at<float>(row, col) = (src.cols - col - 1); //列映射  
				map_y.at<float>(row, col) = row;
				break;
			case 2:
				map_x.at<float>(row, col) = col; //行映射  
				map_y.at<float>(row, col) = (src.rows - row - 1);
				break;
			case 3:
				map_x.at<float>(row, col) = (src.cols - col - 1); //列映射  
				map_y.at<float>(row, col) = (src.rows - row - 1);
				break;

			default:
				break;
			}
		}
	}
}

效果

1、缩小一半:
在这里插入图片描述
2、X方向映射(列映射)
在这里插入图片描述
3、Y方向映射(行映射)
在这里插入图片描述
4、XY方向均映射:

在这里插入图片描述

opencv-26 图像几何变换04- 重映射-函数 cv2.remap() 重映射(Remapping)是图像处理中的一种操作,用于将图像中的像素从一个位置映射到另一个位置。重映射可以实现图像的平移、旋转、缩放和透视变换等效果。它是一种基于像素级的图像变换技术,可以通过定义映射关系来改变图像的几何形状和外观。在重映射中,我们需要定义一个映射表(Map),这个映射表指定了源图像中每个像素点在目标图像中的位置。对于每个像素点 (x, y),映射表告诉我们在目标图像中的新位置 (x’, y’)。通过对所有像素点进行映射,我们就可以得到经过重映射变换后的新图像。 阅读详情

相关推荐

OpenCV每日函数 几何图像变换模块 (8) remap函数

对图像应用通用几何变换。函数 remap 使用指定的映射转换源图像: 其中具有非整数坐标的像素值是使用一种可用的插值方法计算的。 mapx 和 mapy 可以分别编码为 map1 和 map2 中的单独浮点映射,或者 map1 中 (x,y) 的交错浮点映射,或者使用 convertMaps 创建的定点映射。 您可能希望将映射的浮点表示转换为定点表示的原因是它们可以产生更快(2x)的重新映射操作。 在转换后的情况下,map1 包含对 (cvFloor(x), cvFloor(y)),map2

学以致用 知行合一 2082

opencv 图像重映射cv::remap()(图像上下、左右镜像)

文章目录概念opencv 函数支持 cv::remap()1.函数原型:2.参数说明测试代码:程序运行效果: 概念 什么是重映射? 这是从图像中的一个位置获取像素并将它们定位到新图像中的另一个位置的过程。 为了完成映射过程,可能需要对非整数像素位置进行一些插值,因为源图像和目标图像之间并不总是存在一对一的像素对应关系。 我们可以表达每个像素位置的重映射( x , y)作为: 其中g()是映射的图像,f()是源图像,h(x,y)是作用于(x,y)的映射函数。 opencv 函数支持 cv::remap()

weixin_44901043的博客 2842

YOLOv11类别重映射全栈指南:从一对一映射、多对一合并到条件与动态重映射,详解八大核心技术与三大实战案例,快速掌握模型部署中的类别ID灵活转换

本文介绍了YOLOv11目标检测中的类别重映射技术,主要包括三个核心部分: 基础概念与应用场景:类别重映射是在推理过程中修改输出类别ID的技术,适用于多模型融合、类别合并/细分、API适配等场景。例如将多个细分类别合并为一个大类,或调整类别ID以兼容下游系统。 技术原理:分析了YOLOv11的输出结构(边界框、置信度、类别概率等),阐述了重映射的数学原理(映射函数f(original_id, attributes))和实现层次(模型输出层、后处理阶段、应用层)。 实现方法:重点介绍了一对一重映射的实现,通过

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 449

[OpenCV] 数字图像处理 C++ 学习——15像素重映射(cv::remap) 附完整代码

像素重映射将图像中的每个像素映射到新位置,实现图像的扭曲、校正等操作。在 OpenCV 中,函数就是用于实现这种功能的。本文将详细介绍像素重映射的基本原理以及在 OpenCV 中的实现方法,并给出完整代码。

m0_60437290的博客 3395

2025反爬虫革命:京东商品接口的动态指纹认证与量子加密传输方案

在2025年,全球电商API接口面临的安全威胁呈现指数级增长:京东构建了基于硬件、软件、行为三重维度的设备指纹模型:京东构建了基于BB84+E91混合协议的量子密钥中继网络:

FB13713612741的博客 1648

SAP PI实战:5分钟搞定REST适配器同步接口配置(含Postman测试技巧)

本文详细介绍了如何在SAP PI中快速配置REST适配器同步接口,包括ESR设计、集成流配置及Postman测试技巧。通过实战步骤和关键参数设置,帮助开发者高效实现系统集成,特别适合需要实时数据交互的业务场景。

weixin_33738555的博客 485

23.像素重映射

1.主要内容 像素重映射的介绍 API介绍 代码演示 2.像素重映射的介绍 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。 g(x,y)是重映射之后的图像,h(x,y)是功能函数,f是源图像 假设有映射函数 3.API介绍cv::remap Remap( InputArray src,// 输入图像,需要单通道8位或者浮点类型的图...

罗伊的博客 443

Dify 部署与使用

本文介绍了Dify社区版的快速部署指南,涵盖系统架构、环境配置和初始化流程。Dify采用微服务架构,通过Docker Compose一键部署8个核心容器,包括前端、后端、数据库等组件。部署过程包括克隆代码、配置环境变量和启动服务,首次启动需3-10分钟下载镜像。文章详细讲解了.env文件的配置要点,包括服务地址、数据库连接和向量存储设置,并提供了生产环境安全加固建议。最后通过访问/install页面完成管理员账号初始化,即可开始使用Dify构建AI应用。

海兰 587

第23课 像素重映射

文章目录1. 什么是像素重映射2. 相关API2.1 cv::remap()3.例程 1. 什么是像素重映射 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。 g(x,y)是重映射之后的图像,h(x,y)是功能函数,f是源图像 2. 相关API 2.1 cv::remap() remap( InputArray src,// 输入图像 Out...

weixin_42877426的博客 272

Notion卡顿救星:3分钟搞定DNS优化,手机电脑全平台加速指南

本文针对Notion访问慢和卡顿问题,提供了全平台DNS优化与Hosts文件修改的详细指南。通过更换优质DNS服务器或建立静态IP映射,可有效解决因网络延迟和域名解析导致的加载缓慢,实现手机与电脑端的快速加速,提升Notion使用流畅度。

v6b7n8m9q0的博客 1306

YOLOv11改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 1496

(23)像素重映射

/* *像素重映射 先想一下数学上面的映射的概念 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。 API介绍cv::remap Remap( InputArray src,// 输入图像 没有要求 OutputArray dst,// 输出图像 ...

nuc_Sheryl的博客 641

python基础知识补充

1. jupyter notebook 解释 2. ipython 魔法命令 3. latex in Markdown cell(在markdown里面编写数学公式) 4. jupyter notebook功能扩展:安装Nbextension 5. python解释与运行 6. 垃圾回收(计数机制与分代回收机制) 7. 名字空间与局部作用域L和全局作用域G 8. 小整数缓存区与字符驻留 9. Statement &Expression 10. 调试

weixin_43178406的博客 1万+

OpenCV基础课程笔记23像素重映射

写在前面 这节内容里面的不管左右反转、上下翻转,还是旋转180度,都比较好理解,最难理解的是做小微原图的二分之一,这个我到现在仍有点蒙圈。 贾志刚老师调程序调出来的右下是有夹缝的,然后弹幕里面有人说他这个写的有问题,于是我到处去搜博客。 贾志刚老师在第一节课加上的0.5,博客里面有减去0.5,也有不加不减(贾志刚老师下节课认为不加不减才对)。 我自己尝试发现减去0.25之后,能消掉夹缝,但是,也只是对于女友大粗腿下采样.jpg这一张图来说的,画了半天图,大致明白了,这个和像素有很大关系,加不加,加多少,这得

爱和九九的博客 272

【QCA6174】QCA6174 DFS认证的时候会有概率信道不会跳转的情况,通常跳转成功概率只有25%问题分析及解决方案

Master设备需要测试的项目。

wgl307293845的博客 752

PCB高速信号换层孔新技术:VECS(Vertical Conductive Structure Technology)解析

摘要:垂直导电结构(VeCS)是一种新型PCB互连技术,由平板信号走线和椭圆形接地层构成半同轴结构,相比传统过孔具有显著优势。通过全波仿真和实测验证,VeCS展现出更好的阻抗连续性、更低的插入损耗和回波损耗,以及优异的串扰抑制能力。其椭圆形接地结构能有效隔离电磁干扰,在相同布线密度下远端串扰比传统过孔降低约50%。VeCS制备工艺与传统PCB工艺兼容,无需新增设备,且能实现更高密度互连。测试结果显示,2.5英寸带状线通道中VeCS结构的信号完整性表现明显优于传统过孔,为高速数字系统提供了更可靠的垂直互连解决

小孟同学的博客 198

学习c++版opencv3.4之23-像素重映射

像素重映射。   #include &lt;opencv2/opencv.hpp&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; using namespace cv; Mat src, dst, map_x, map_y; int index_num = 3; void my_map(...

u010397980的博客 206

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[CV] OpenCV图像处理教程- 23:像素重映射pixel remap

转载于:https://www.cnblogs.com/ecoflex/p/10842306.html

weixin_30845171的博客 234

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

重映射

重映射 重映射就是把一幅图像中某个位置的像素放置到另一个图片中指定位置的过程。 用一个数学公式来表示就是: 其中的 f 就是映射方式,也就说,像素点在另一个图像中的位置是由 f 来计算的。 在OpenCV中,用的是remap函数实现重映射。 基本重映射 1 #include <opencv2/opencv.hpp> 2 #include <opencv2...

weixin_30604651的博客 191

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OpenCvSharp 学习笔记23--直方图均衡化

一,什么是直方图(Histogram)

C++++ ++ 2333

OpenCV——重映射、仿射变换

1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 #include <math.h> 4 5 using namespace cv; 6 using namespace...

一抹烟霞的博客 208

opencv_23 remap映射

像素重映射:就是把输入图像中的各个像素按照一定规则映射到新图像的对应位置上去。(类似于我们照镜子,相互对应) API Remap() Remap( 输入图像; 输出图像; x方向映射表;//这里的x对应的是column y方向映射表;//这里的y对应的是row 插值方法;//这里常用线性插值 边界补充;//BORDER_CONSTANT 边界填充颜色 ) CV_<bit_depth&g...

weixin_41405284的博客 283

opencv学习笔记7 重映射和仿射变换

一。重映射 void remap(InputArray src, OutputArraydst, InputArray map1, InputArray map2, int interpolation, intborderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar()) 第一个参数,InputArray类型...

weixin_30548917的博客 162

opencv入门:缩放,翻转,仿射,透视,重映射

opencv入门:缩放,翻转,仿射,透视,重映射

AI路漫漫 801

OpenCV学习笔记(九) 重映射、仿射变换

重映射 通过重映射来表达每个像素的位置  : 这里  是目标图像,  是源图像,  是作用于  的映射方法函数.想象一下我们有一个图像  , 我们想满足下面的条件作重映射:,图像会按照  轴方向发生翻转. 1 2 3 4 map_x.create( src.size(), CV_32FC1 );

liuheng0111的博客 747

【图像加密】基于Halton序列进行图像加密,有位置扰乱和像素扰乱 相关性和直方图分析附Matlab代码

一、Halton 序列与图像加密的核心关联在图像加密领域,“随机性” 是保障加密安全性的核心 —— 加密算法需通过随机化处理打破原始图像的像素分布规律,使攻击者无法从密文图像中反推原始信息。而 Halton 序列作为一种低差异度的准随机序列,兼具 “随机性优”“可复现性强”“计算效率高” 的特点,恰好适配图像加密中 “位置扰乱” 与 “像素扰乱” 的技术需求,成为替代传统伪随机序列(如混沌序列、伪随机数发生器)的优质选择。1.1 Halton 序列的定义与特性。

matlab_dingdang的博客 644
上一篇: OpenCV3:通道和位深的含义
下一篇: 24-直方图均衡化
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值