opencv 图像填充

2023-11-17

定义pad_image_stride函数,将图像的长和宽填充到可以被指定整数整除。这个整数倍通常定义为stride。

一、opencv关键函数

opencv关键函数:cv2.copyMakeBorder

#im为待填充的图像
#top为图像上方填充像素个数
#bottom为图像下方填充像素个数
#left为图像左侧填充像素个数
#right为图像右侧填充像素个数
#value为填充的颜色
im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)

二、函数输入输出

#im为输入图像
#stride=32,表示长宽需要被32整除
#ratios[0],取值为0~1,表示待填充像素在图片上方填充比例
#如果图片高度上需要填充dh个像素,那么图片上方填充dh*ratios[0],下方填充dh*(1-ratios[0])个像素。
#ratios[1],取值为0~1,表示待填充像素在图片左侧填充比例
#如果图片宽度上需要填充dw个像素,那么图片左侧填充dw*ratios[1],右侧填充dw*(1-ratios[1])个像素。
#color为填充的颜色
pad_image_stride(im, stride=32, ratios=[0, 0], color=(0, 0, 0))

三、pad_image_stride代码

def pad_image_stride(im, stride=32, ratios=[0, 0], color=(0, 0, 0)):
    shape = im.shape[:2]
    new_shape = [0, 0]
    new_shape[0] = shape[0] - shape[0] % stride + stride
    new_shape[1] = shape[1] - shape[1] % stride + stride
    dh     = max(0, new_shape[0] - shape[0])
    dw     = max(0, new_shape[1] - shape[1])
    top    = int(dh * ratios[0])
    left   = int(dw * ratios[1])
    bottom = dh - top
    right  = dw - left
    im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)  
    return im

def pad_image_stride(im, stride=32, ratios=[0, 0], color=(0, 0, 0)):
    shape = im.shape[:2]
    new_shape = [0, 0]
    new_shape[0] = shape[0] - shape[0] % stride + stride
    new_shape[1] = shape[1] - shape[1] % stride + stride
    dh     = max(0, new_shape[0] - shape[0])
    dw     = max(0, new_shape[1] - shape[1])
    top    = int(dh * ratios[0])
    left   = int(dw * ratios[1])
    bottom = dh - top
    right  = dw - left
    im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)  
    return im

更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv 图像填充 的相关文章

随机推荐

  • 在MDK5中新建STM32F4XX工程模板(基于固件库)

    0 库函数和寄存器的区别 本质上是一样的 可以在库函数模板里面 直接操作寄存器 因为官方库相关头文件有寄存器定义 但是不能在寄存器模板调用库函数 因为没有引入库函数相关定义 了解寄存器基本原理的目的是为了让我们对STM32相关知识有比较深入
  • linux显示指定目录下的所有文件的文件类型和文件名

    linux显示指定目录下的所有文件的文件类型和文件名 并打印普通文件个数 用到的函数 DIR opendir const char name struct dirent readdir DIR dirp int closedir DIR d
  • python 离群值_如何从Numpy数组中删除离群值

    我写了一个代码 取多个图像的平均值来检索背景 这基本上删除了图像中的移动对象 我试着在取平均值之前去掉离群值 这样我就可以得到背景而不是褪色的对象 我尝试了一些技巧 最近的一个是 usr bin env python3 import num
  • lock-linux

    sem unlink sem open pthread getspecific
  • 初识Java——指针

    指针 Pointer 还记得第一次接触指针是在大一的c语言学习中 当时学完之后只知道 就是代表的指针 但是至于其真实含义及用法还没有真正学会 这一次从零开始学习Java 又一次学习到了指针 因此对指针有了更多的认识 下面就是通过最近的学习我
  • python 制作菜单栏的详细教程

    创建一个下拉式菜单 from tkinter import import tkinter messagebox 创建主窗口 win Tk win config bg 87CEEB win title matinal的分析系统 win geo
  • XSS、CSRF、SSRF、暴力破解

    目录 1 XSS 1 1 XSS概述 1 1 1 什么是XSS 1 1 2 XSS攻击流程 1 1 3 XSS触发条件 1 标签法 2 伪协议 3 事件 1 2 反射型XSS Low Medium High 1 3 存储型XSS Low M
  • 51单片机实训(一)————Keil 基本操作

    文章目录 前言 一 Keil是什么 二 Keil基本操作 1 新建Keil工程 2 编写代码 3 输出 hex 文件 并编译 4 关联仿真程序 总结 前言 大家好 我是三 这是我的第二篇文章 更新有点慢 抱歉 上一篇文章 咱们了解学习了Pr
  • PTA 1075 链表元素分类 (c++)

    1075 链表元素分类 25 分 思路 首先建立一个结构体包含数据和下个地址 还有大小为3得vector数组 然后建立一个结构体数组 下标即为当前结点得地址 这样其实就可以用结构体数组来模拟链表进行一系列操作 然后定义一个变量并赋给它首地址
  • XML乱码问题和encoding的理解

    文件编码 文件编码也称为字符编码 用于指定在处理文本时如何表示字符 一种编码可能优于另一种编码主要取决于它能处理或不能处理哪些语言字符 不过通常首选的是 Unicode 读取或写入文件时 未正确匹配文件编码的情况可能会导致发生异常或产生不正
  • maven打包jar包到本地仓库(命令和插件两种方式)

    maven打包代码到本地仓库 命令行 打包准备 下载好maven 配置了maven的全局变量 测试 进入命令行输入 mvn version 检查maven是否安装好 joi xuyideMacBook Pro mvn version Apa
  • 【转载】Linux驱动程序框架

    http blog csdn net lemon fantasy archive 2009 02 17 3901030 aspx Linux 将所有外部设备看成是一类特殊文件 称之为 设备文件 如果说系统调用是Linux内核和应用程序之间的
  • 软件测试操作技巧分享

    一 测试阶段划分 1 单个模块功能测试时间相对较长 但每一个项目都应该有专门的集成测试阶段 并且应该不止进行一轮 每一轮集成测试 应该都有自己的目的 比如第一轮集成测试 是根据集成测试要点验证整体功能情况 第二轮集成测试是回归测试 第三轮集
  • 华为OD机试真题-新词挖掘【2023Q1】

    题目描述 小华负责公司知识图谱产品 现在要通过新词挖掘完善知识图谱新词挖掘 给出一个待挖掘问题内容字符串Content和一人词的字符串word 找到content中所有word的新词 新词 使用词word的字符排列形成的字符串 请帮小华实现
  • 改写PEB在傀儡进程执行代码

    方法来源于shadow3 我整理下 include
  • 单片机毕设 题目_ 基于单片机的智能小车 - 嵌入式 物联网 本科毕设

    文章目录 1 简介 2 绪论 2 1 课题背景与目的 3 系统设计 3 1 设计方案 3 1 1 小车遥控部分 方案一 方案二 3 1 2 小车驱动部分 方案一 方案二 3 2 系统架构 3 3 主要设计流程 3 3 1 材料 3 3 2
  • 如何在virtualbox模拟的安卓系统移植virgl

    Virgl是一种在虚拟机中实现3D加速的技术 它可以将虚拟机的图形输出传递给宿主机的显卡进行加速处理 如果想要在VirtualBox模拟的安卓系统上移植Virgl 可以按照以下步骤操作 在VirtualBox中创建一个安卓虚拟机 并确保它已
  • 转变思路,重建团队

    每一次人员流动都会带来一次思考 去年秋天 受到andriod等领域大面积招人波及等原因 离职的3个同事有2个都干了与andriod有关的工作 觉得andriod很可能已经产生了泡沫 导致团队出现人员流失 1 最近 经过一个反思周期之后 随着
  • VUE 富文本 wangEditor v4版本 增加源码模式 与 Monaco Editor结合使用

    VUE 富文本 找了好多开源库 发现 wangEditor Github的星最多 应该也是值得信赖的 但是在使用过程中发现wangEditor 没有源码模式 文档也说明需要自己对接 wangEditor官方文档 于是自己写了一个与 Mona
  • opencv 图像填充

    定义pad image stride函数 将图像的长和宽填充到可以被指定整数整除 这个整数倍通常定义为stride 一 opencv关键函数 opencv关键函数 cv2 copyMakeBorder im为待填充的图像 top为图像上方填