opencv 基础函数

opencv 拼接两副图像是很好处理的,如左右拼接, 使用colRange,上下拼接,使用rowRange,这两个函数在opencv里封装的比较好,注意是左闭右边开的函数。

1 rowRange colRange

inline Mat Mat::rowRange(int startrow, int endrow) const
{return Mat(*this, Range(startrow, endrow), Range::all());
}
inline Mat Mat::colRange(int startcol, int endcol) const
{return Mat(*this, Range::all(), Range(startcol, endcol));
}

statrol 和endcol 分别是开始和结束的列,startrow和endrow是开始和结束的列,注意是左闭右边开,也就是包含开始但是不包含结束。

2、创建和合并

创建一个图像,h_out,w_out 是新图像的大小

    Mat FeatureMat = Mat::zeros(h_out,w_out,s1.type());//映射图像Mat tmpMat1 = FeatureMat.rowRange(0, h1);Mat tmpMat2 = FeatureMat.rowRange(h1, h_out);//需要拷贝的图1tmp1.copyTo(tmpMat1);//需要拷贝的图2tmp2.copyTo(tmpMat2);

3、边缘融合

两幅图像合并的地方是有清晰的界限的,如果取第一幅图像的全部,图像底部还会有黑边,因此,取图的时候注意去除最后一行或者最后一列。

上面这幅图的接线有一道像刀锋一样,下图则使用融合以后,接线处没有刀锋感了

算法如下:

int y = h1 - 1; //拼接的最后一行for (int i = 0; i < w_out; ++i) {cv::Vec3b a1 = FeatureMat.at<cv::Vec3b>(y, i);cv::Vec3b a2 = FeatureMat.at<cv::Vec3b>(y+1,i);cv::Vec3b a3 = FeatureMat.at<cv::Vec3b>(y+2, i);FeatureMat.at<cv::Vec3b>(y, i) = a1 * 0.6 + a2 * 0.4;FeatureMat.at<cv::Vec3b>(y+1, i) = a1 * 0.4 + a2 * 0.6;FeatureMat.at<cv::Vec3b>(y+2, i) = a1 * 0.3 + a2 * 0.3 + a3 *0.4;}

原理是取三行像素做融合计算。由于摄像头的角度问题,上下对齐都还需要很多算法来计算,这是第一步,请等待下文。

opencv图像-拼接线的处理相关推荐

  1. OpenCV图像梯度(Sobel和Scharr)

    OpenCV图像梯度(Sobel和Scharr) 1 图像梯度是什么? 2 图像梯度的用途 3 图像梯度的使用 参考 这篇博客将介绍图像渐变以及如何使用OpenCV的cv2.Sobel计算Sobel渐 ...

  2. python opencv 图像旋转

    python opencv 图像旋转 原图 顺时针旋转 代码: import cv2 path = '2.jpg' img = cv2.imread(path,1) trans_img = cv2.t ...

  3. OpenCV高级拼接Stitcher类

    OpenCV高级拼接Stitcher类 高级拼接Stitcher类 目标 代码 解释 相机型号 试试看 细节拼接 高级拼接Stitcher类 目标 在本教程中,您将学习如何: 使用高级拼接API进行由 ...

  4. OpenCV 霍夫线变换Hough Line Transform

    OpenCV 霍夫线变换Hough Line Transform 霍夫线变换Hough Line Transform 目标 理论 霍夫线变换 它是如何工作的? 标准概率霍夫线变换 这个程序做什么? 代 ...

  5. python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...

    图像边框的实现 图像边框设计的主要函数 cv.copyMakeBorder()--实现边框填充 主要参数如下: 参数一:源图像--如:读取的img 参数二--参数五分别是:上下左右边的宽度--单位:像 ...

  6. opencv图像修复

    opencv图像修复 图像修复,一张利用原图,一张利用损坏位置的灰度图,进行图像修复,利用的是cv2.inpaint的函数. 原图: 滤波后的损坏位置的灰度图: 修复结果: 代码: import cv ...

  7. opencv 图像金字塔及图像重建、融合

    一.图像金字塔 关于图像金字塔的介绍,这里推荐一篇毛星云写的博客 OpenCV图像金字塔:高斯金字塔.拉普拉斯金字塔与图片尺寸缩放,是基于<OpenCV3编程入门>中图像金字塔部分编写,基 ...

  8. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  9. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

最新文章

  1. hdfs 操作 入门api
  2. 华强北耳机修改序列号|支持中英文|自定义修改|傻瓜式一键修改序列号~
  3. 基础04继承、super、this、抽象类
  4. bjui获取当前页签或者是dialog容器
  5. 【MySql】Navicat Premium 15 无限试用脚本
  6. win7 蓝牙4.0 ble驱动_传统蓝牙搜索流程分析
  7. word和PDF手写电子签名
  8. 关于SQL server 2012无法打开物理文件“某某某”,操作系统错误5 :(拒绝访问)。(Microsoft SQL Server,错误 5120)
  9. 《强化学习与最优控制》学习笔记(三):强化学习中值空间近似和策略空间近似概述
  10. 0x80073712_处理win10更新提示错误代码“0x80073712”的方法
  11. c语言结构体作为形参是否加struct_(struct)结构体变量作为函数参数调用的方法小结...
  12. Quartus Prime 与 Modelsim 调试 及do文件使用
  13. JS数据类型检测的坑和通用数据类型检测方法
  14. Ogre天龙八部地形mesh部分的C++源码
  15. 历年真题 九宫重排(BFS)
  16. html5单屏滚动页面案例,20个精巧走心的单页滚动网页设计案例
  17. Linux下创建临时文件
  18. WSF操作系统抽象层学习笔记 (一) ---简介和内存管理
  19. No.61-HackTheBox-windows-Conceal-Walkthrough渗透学习
  20. 书读少别骗我,QQ等级也能贷款了?

热门文章

  1. Apple新品京东到家、小时购首发开售 超1400家门店“小时送达”
  2. 国家市场监管总局:低价倾销、大数据杀熟等价格违法行为将被罚
  3. “变味”的扫码点餐 不获取个人信息不能吃饭
  4. 百度启动“2021好运中国年” 22亿福利项目
  5. 当半个娱乐圈都在吃自嗨锅,方便面去哪儿了?
  6. 国内旅游业务全面复苏 携程后疫情时代如何深耕旅游市场?
  7. iPhone 12 Pro火爆程度超预期 苹果紧急向关键组件厂商加单
  8. “央视boys” 四人带货超5亿:权来康康,撒开了买
  9. 两天连续送五国 马云援欧物资加速运抵eWTP枢纽
  10. 离上市又近一步!华为P40系列在工信部入网......