首页 > 其他分享 >opencv 为图像添加边界

opencv 为图像添加边界

时间:2024-07-30 09:28:15浏览次数:14  
标签:src borderType opencv 添加 图像 BORDER cv left

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

希望卷积后得到的矩阵大小不变
希望改变图像大小,但是不改变宽高比
opencv实现
opencv中使用copyMakeBorder()来完成这一功能
api
在这里插入图片描述

src是原图像矩阵
dst是新图像矩阵
top/bottom/left/right是边界扩展的大小(比如5就代表5个像素)
borderType
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()

效果如下:
在这里插入图片描述

标签:src,borderType,opencv,添加,图像,BORDER,cv,left
From: https://blog.csdn.net/m0_37302966/article/details/140763608

相关文章

  • opencv 膨胀与腐蚀
    腐蚀和膨胀Erosion/Dilationerosion/dilation,用白话说,就是让图像亮的区域收缩和扩张.原理我们定义一个卷积核矩阵.这个矩阵可以是任何形状的,但通常而言,是矩形或者圆形的.同时要定义一个锚点位置.用这个卷积核矩阵挨个地划过原始图像矩阵,同时更改锚点位置的像素值.......
  • 昇思25天学习打卡营第19天|ResNet50 图像分类案例:数据集、训练与预测可视化
    目录环境配置数据集加载数据集可视化BuildingBlockBottleneck构建ResNet50网络模型训练与评估可视化模型预测环境配置        首先指出实验环境预装的mindspore版本以及更换版本的方法。然后,它卸载了已安装的mindspore并重新安装指定的2.3.0rc1版......
  • 从opencv视频文件夹中读取并提取关键点
    我的文件夹中有一个视频列表(每个视频10秒),我试图循环遍历每个动作视频以提取关键点并将它们保存为json文件。path="pathtovideofolder"forfileinos.listdir(path):cap=cv2.VideoCapture(path+file)whilecap.isOpened():try:ret,frame=cap.......
  • Python OpenCV - 显示坏像素检查测试
    我想找到显示器中存在的每个坏像素。坏像素可能是颜色不正确的像素,或者像素只是黑色。显示屏的尺寸为160x320像素。所以如果显示效果好的话,必须有160*320=51200像素。如果显示器没有51200像素,那就是坏的。另外,我想知道每个坏像素的位置。一旦拍摄的图像太大,我将共享一个......
  • 在python日志输出的每一行前面添加变量缩进
    我正在将日志记录构建到一个Python应用程序中,我希望它是人类可读的。目前,调试日志记录了调用的每个函数以及参数和返回值。这意味着,实际上,嵌套函数调用的调试日志可能如下所示:2024-07-2916:52:26,641:DEBUG:MainController.initialize_componentscalledwithargs<control......
  • 你能将 HTTPS 功能添加到 python Flask Web 服务器吗?
    我正在尝试构建一个Web界面来模拟网络设备上的静态接口,该网络设备使用摘要式身份验证和HTTPS。我想出了如何将摘要式身份验证集成到Web服务器中,但我似乎无法找到如何使用FLASK获取https,如果您可以向我展示如何实现,请评论我需要使用下面的代码做什么来实现这一点。from......
  • JMeter如何添加jar包
    1.确保方法继承抽象类AbstractJavaSamplerClient(项目中确保已经成功添加了jmeter的依赖)点击查看代码</details></details><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.6......
  • 创建docker用户组并添加普通用户
    创建用户组并添加普通用户至该用户组1.添加Docker用户组通常,Docker会将其套接字的组设置为docker,允许docker组的用户访问套接字。首先,您需要创建一个docker组,然后将您的用户添加到该组。创建Docker组(如果还没有的话)如果还没有docker组,可以使用以下命令创建它(通......
  • Chrome 搜索页面按钮的添加以及图片的更改(萌新)
    在学习react中不断的练习便是最好的进步方法,今天对chrome搜索页面动了心思,好了让我们一起看看怎么去改动吧(我是新手如有不对请大佬补充)首先呢我们要有一个完整的框架,建立一个全新的项目,在里面有一个chrome框架,才可以实行                 ......
  • 小一保姆级 python三大核心多态、抽象类、动态添加内容详解
    一.多态多态是面向对象编程中的一个核心概念,它允许一个接口被多个数据类型实现。这意味着,即使多个类具有不同的内部实现,它们也可以共享一个公共接口。多态的实现通常依赖于继承和方法重写。继承:子类继承父类的属性和方法。方法重写:子类重写父类中的方法,以提供特定的实现。......