www.cnblogs.com
Open in
urlscan Pro
121.40.43.188
Public Scan
URL:
https://www.cnblogs.com/yanghailin/p/12088204.html
Submission: On July 27 via manual from SG — Scanned from DE
Submission: On July 27 via manual from SG — Scanned from DE
Form analysis
1 forms found in the DOMGET https://zzk.cnblogs.com/s
<form id="zzk_search" class="navbar-search" action="https://zzk.cnblogs.com/s" method="get" role="search">
<input name="w" id="zzk_search_input" placeholder="代码改变世界" type="search" tabindex="3">
<button type="submit" id="zzk_search_button">
<img src="/images/aggsite/search.svg" alt="搜索">
</button>
</form>
Text Content
* * 首页 * 新闻 * 博问 * 专区 * 闪存 * 班级 * * 我的博客 我的园子 账号设置 简洁模式 ... 退出登录 注册 登录 无左无右 * 博客园 * 首页 * 新随笔 * 联系 * 订阅 * 管理 随笔 - 175 文章 - 1 评论 - 23 阅读 - 16万 OPENCV REMAP函数测试 REMAP()简单重映射 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。 为了完成映射过程, 我们需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的。 一般情况下,我们通过重映射来表达每个像素的位置 (x,y), 像这样 : g(x,y) = f ( h(x,y) ) 在这里, g( ) 是目标图像, f() 是源图像, 而h(x,y) 是作用于 (x,y) 的映射方法函数。 在OpenCV中,我们用函数remap( )来实现简单重映射。 C++: void remap(InputArray src, //输入图像 OutputArraydst, //输出图像 InputArray map1,//第一个映射 InputArray map2, //第二个映射 int interpolation, //插值 intborderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar() ) 第三个参数,InputArray类型的map1,它有两种可能的表示对象: 表示点(x,y)的第一个映射。 表示CV_16SC2 , CV_32FC1 或CV_32FC2类型的X值。 第四个参数,InputArray类型的map2,同样,它也有两种可能的表示对象,而且他是根据map1来确定表示那种对象。 若map1表示点(x,y)时。这个参数不代表任何值。 表示CV_16UC1 , CV_32FC1类型的Y值(第二个值)。 第五个参数,int类型的interpolation,插值方式,之前的resize( )函数中有讲到,需要注意,resize( )函数中提到的INTER_AREA插值方式在这里是不支持的,所以可选的插值方式如下: INTER_NEAREST - 最近邻插值 INTER_LINEAR – 双线性插值(默认值) INTER_CUBIC – 双三次样条插值(逾4×4像素邻域内的双三次插值) INTER_LANCZOS4 -Lanczos插值(逾8×8像素邻域的Lanczos插值) 第六个参数,int类型的borderMode,边界模式,有默认值BORDER_CONSTANT,表示目标图像中“离群点(outliers)”的像素值不会被此函数修改。 第七个参数,const Scalar&类型的borderValue,当有常数边界时使用的值,其有默认值Scalar( ),即默认值为0。 .pro文件 QT -= gui CONFIG += c++11 console CONFIG -= app_bundle # The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += main.cpp OPENCV_ROOT_PATH = /home/yhl/software_install/opencv3.2 INCLUDEPATH += $${OPENCV_ROOT_PATH}/include \ $${OPENCV_ROOT_PATH}/include/opencv \ $${OPENCV_ROOT_PATH}/include/opencv2 LIBS += -L$${OPENCV_ROOT_PATH}/lib LIBS += -lopencv_core \ -lopencv_highgui \ -lopencv_imgproc \ -lopencv_imgcodecs \ -lopencv_videoio \ -lopencv_calib3d //-----------------------------------【头文件包含部分】--------------------------------------- // 描述:包含程序所依赖的头文件 //---------------------------------------------------------------------------------------------- #include"opencv2/highgui/highgui.hpp" #include"opencv2/imgproc/imgproc.hpp" #include <iostream> //-----------------------------------【命名空间声明部分】-------------------------------------- // 描述:包含程序所使用的命名空间 //----------------------------------------------------------------------------------------------- using namespace cv; //-----------------------------------【main( )函数】-------------------------------------------- // 描述:控制台应用程序的入口函数,我们的程序从这里开始执行 //----------------------------------------------------------------------------------------------- int main( ) { //【0】变量定义 Mat srcImage, dstImage; Mat map_x, map_y; //【1】载入原始图 srcImage= imread( "/data_2/everyday/1223/dog.jpeg", 1 ); if(!srcImage.data) { printf("读取图片错误,请确定目录下是否有imread函数指定的图片存在~! \n"); return false; } namedWindow("原始图",0); imshow("原始图",srcImage); //【2】创建和原始图一样的效果图,x重映射图,y重映射图 dstImage.create(srcImage.size(), srcImage.type() ); map_x.create(srcImage.size(), CV_32FC1 ); map_y.create(srcImage.size(), CV_32FC1 ); //【3】双层循环,遍历每一个像素点,改变map_x & map_y的值 for(int j = 0; j < srcImage.rows;j++) { for(int i = 0; i < srcImage.cols;i++) { //改变map_x & map_y的值. map_x.at<float>(j,i)= static_cast<float>(srcImage.cols - i); map_y.at<float>(j,i)= static_cast<float>(j); } } //【4】进行重映射操作 remap(srcImage, dstImage, map_x, map_y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0,0,0) ); //【5】显示效果图 namedWindow("remap",0); imshow("remap", dstImage ); waitKey(); return 0; } 测试图片如下,治愈系的小奶狗,_ 好记性不如烂键盘---点滴、积累、进步! 分类: 编程技术 好文要顶 关注我 收藏该文 无左无右 粉丝 - 12 关注 - 6 +加关注 0 0 « 上一篇: tensorflow学习 » 下一篇: opencv 最小二乘法拟合曲线 posted @ 2019-12-23 20:30 无左无右 阅读(3301) 评论(0) 编辑 收藏 举报 刷新评论刷新页面返回顶部 登录后才能查看或发表评论,立即 登录 或者 逛逛 博客园首页 【推荐】下一步,敏捷!| 助力远程办公走向成功系列讲座 编辑推荐: · 技术管理杂谈 · 使用 Three.js 实现炫酷的赛博朋克风格 3D 数字地球大屏 · 聊聊 Redis 是如何进行请求处理 · 基于 ABP 实现 DDD--领域服务、应用服务和 DTO 实践 · 从全局角度,如何设计一个秒杀系统? 最新新闻: · 造谣试驾车断轴?"大V"向理想汽车道歉:未调查清楚,疑遭人下套 · 我在英国TikTok做直播电商 | 霞光出海人 · HarmonyOS 3正式发布,6大特性,9月规模升级 · IJCAI 2022杰出论文公布,大陆作者中稿298篇拿下两项第一 · 80万亿元宇宙市场,Meta和苹果抢疯了! » 更多新闻... 公告 昵称: 无左无右 园龄: 5年9个月 粉丝: 12 关注: 6 +加关注 < 2022年7月 > 日 一 二 三 四 五 六 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 搜索 常用链接 * 我的随笔 * 我的评论 * 我的参与 * 最新评论 * 我的标签 我的标签 * python(2) * 透视校正(1) * 透视变换(1) * Ground Truth(1) * ICDAR2015(1) * 格式化(1) * coco(1) 随笔分类 * leedcode(1) * linux 命令(5) * note(2) * opencv(2) * python(32) * pytorch(36) * tensorflow(2) * tensorrt(2) * 编程技术(40) * 积累(23) * 目标检测(13) * 深度学习(37) * 问题记录(19) 随笔档案 * 2022年7月(4) * 2022年6月(3) * 2022年5月(5) * 2022年4月(2) * 2022年3月(4) * 2022年2月(3) * 2022年1月(5) * 2021年12月(1) * 2021年11月(4) * 2021年10月(11) * 2021年9月(7) * 2021年8月(2) * 2021年7月(2) * 2021年6月(10) * 2021年5月(13) * 2021年4月(6) * 2021年3月(4) * 2021年2月(2) * 2021年1月(4) * 2020年12月(2) * 2020年11月(3) * 2020年10月(1) * 2020年9月(2) * 2020年8月(4) * 2020年7月(2) * 2020年6月(4) * 2020年5月(4) * 2020年4月(4) * 2020年3月(7) * 2020年2月(3) * 2020年1月(4) * 2019年12月(7) * 2019年11月(4) * 2019年10月(1) * 2019年9月(8) * 2019年8月(3) * 2019年7月(14) * 2019年6月(6) * 更多 阅读排行榜 * 1. libtorch 常用api函数示例(史上最全、最详细)(23415) * 2. python matplotlib.pyplot 显示图像(9646) * 3. 可变形卷积 deformable convolution 学习记录(9125) * 4. c++ 文件/文件夹操作(7123) * 5. opencv图像拼接(6009) 评论排行榜 * 1. Real-time Scene Text Detection with Differentiable Binarization 问题记录(5) * 2. 透视变换--点对应变换(3) * 3. DB/DBNet:Real-time Scene Text Detection with Differentiable Binarization 一些问题(3) * 4. voc分割数据集 pil调色板(2) * 5. ubuntu 源码编译libtorch(2) 推荐排行榜 * 1. libtorch 常用api函数示例(史上最全、最详细)(4) * 2. 可变形卷积 deformable convolution 学习记录(2) * 3. opencv 以及 c++ 函数(2) * 4. ssd loss详解(1) * 5. L2norm 层tensorrt api实现(1) 最新评论 * 1. Re:目标检测---refinedet * 优秀 * --四海潮声 * 2. Re:ssd loss详解 * 文章写的真好 * --谷阿幻 * 3. Re:ubuntu 源码编译libtorch * @guyanij6 不需要... * --无左无右 * 4. Re:crnn pytorch 训练、测试 * 赞一个 * --极客说_范儿 * 5. Re:ubuntu 源码编译libtorch * export CMAKE_PREFIX_PATH=\({CONDA_PREFIX:-"\)(dirname $(which conda))/../"} 提示缺少dirname,请问要自己写路径嘛?... * --guyanij6 Copyright © 2022 无左无右 Powered by .NET 6 on Kubernetes