opencv之为图像添加边界的方法示例


Posted in Python onDecember 26, 2019

我们经常会有对图像边缘做扩展的需求.比如

希望卷积后得到的矩阵大小不变希望改变图像大小,但是不改变宽高比opencv实现

opencv中使用copyMakeBorder()来完成这一功能

api

opencv之为图像添加边界的方法示例

  1. src是原图像矩阵
  2. dst是新图像矩阵
  3. top/bottom/left/right是边界扩展的大小(比如5就代表5个像素)
  4. borderType
  5. value是扩充的像素填什么值

borderType分两种:

BORDER_CONSTANT
边缘填充用固定像素值,比如填充黑边,就用0,白边255

BORDER_REPLICATE
用原始图像相应的边缘的像素去做填充,看起来有一种把图像边缘"拉糊了"的效果

opencv示例

import sys
import cv2 as cv

def test():
 src = cv.imread("/home/sc/disk/keepgoing/opencv_test/lights.jpeg") 
 top = int(0.05 * src.shape[0]) # shape[0] = rows
 bottom = top
 left = int(0.04 * src.shape[1]) # shape[1] = cols
 right = left
 
 value = [0,0,0]
 borderType = cv.BORDER_CONSTANT
 dst1 = cv.copyMakeBorder(src, top, bottom, left, right, borderType, None, value)
 
 borderType = cv.BORDER_REPLICATE
 dst2 = cv.copyMakeBorder(src, top, bottom, left, right, borderType, None, value)
 
 cv.imshow("blackborder",dst1)
 cv.imshow("BORDER_REPLICATE",dst2)
 
 if 27 == cv.waitKey():
  cv.destroyAllWindows()
  
test()

效果如下:

opencv之为图像添加边界的方法示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现简单多线程任务队列
Feb 27 Python
Django日志模块logging的配置详解
Feb 14 Python
详解python while 函数及while和for的区别
Sep 07 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
python 获取毫秒数,计算调用时长的方法
Feb 20 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
Python实现我的世界小游戏源代码
Mar 02 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 Python
Python 过滤错误log并导出的实例
Dec 26 #Python
python3 pathlib库Path类方法总结
Dec 26 #Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 #Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 #Python
基于h5py的使用及数据封装代码
Dec 26 #Python
python深copy和浅copy区别对比解析
Dec 26 #Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 #Python
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
php while循环得到循环次数
2013/10/26 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
vue利用axios来完成数据的交互
2018/03/23 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
python线程池的实现实例
2013/11/18 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python入门必须知道的11个知识点
2018/03/21 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
使用python3实现操作串口详解
2019/01/01 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
基于python实现学生信息管理系统
2019/11/22 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
小结Python的反射机制
2020/09/28 Python
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
《一个小村庄的故事》教学反思
2014/04/13 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
2014年妇女工作总结
2014/12/06 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
压缩Redis里的字符串大对象操作
2021/06/23 Redis
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
Rust中的Struct使用示例详解
2022/08/14 Javascript