Opencv的基础操作

2023-11-09

一、图像填充

首先定义图像显示函数:

def cv_show(name, img):
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

图像读取:

img_cat = cv2.imread('cat.jpg')

定义图像填充的大小:

top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)

 接下来分别采用复制法、反射法、外包装法、常量法进行填充。

复制法:

# 复制法,复制最边缘像素
replicate = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)

反射法: 

# 反射法,对感兴趣的图像中的像素在两边进行复制
reflect = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REFLECT)

第二种反射法

# 反射法,也就是以最边缘像素为周,对称
reflect101 = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size,
                                borderType=cv2.BORDER_REFLECT_101)

外包装法:

# 外包装法
warp = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_WRAP)

常量法:

# 常量法,常数值填充,此处填充灰色
constant = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_CONSTANT,
                              value=0)

输出结果对比如下:

 

 二、形态学操作

首先读入原始图像:

pie = cv2.imread('pie.jfif')

 

 

定义卷积核:

kernel = np.ones((10, 10), np.uint8)

腐蚀函数:

dige_erosion = cv2.erode(pie, kernel=kernel, iterations=1)

输出结果如下:

 

膨胀函数:

dige_dilate = cv2.dilate(pie, kernel=kernel, iterations=1)

输出结果如下:

开运算:先腐蚀后膨胀

opening = cv2.morphologyEx(pie, cv2.MORPH_OPEN, kernel=kernel)

输出结果如下:

闭运算:先膨胀后腐蚀

closing = cv2.morphologyEx(pie, cv2.MORPH_CLOSE, kernel=kernel)

输出结果如下:

 

梯度:膨胀-腐蚀

gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)

输出结果如下:

礼帽:原始输入-开运算结果

tophat = cv2.morphologyEx(pie, cv2.MORPH_TOPHAT, kernel)

输出结果如下:

黑帽:闭运算-原始输入

blackhat = cv2.morphologyEx(pie, cv2.MORPH_BLACKHAT, kernel)

输出结果如下:

 三、图像平滑

传入原始图像:

均值滤波:简单的平均卷积操作

blur = cv2.blur(cat, (3, 3))

 方框滤波:基本和均值一样,可以选择归一化, normalize为true时就做归一化,和均值滤波一样

box = cv2.boxFilter(cat, -1, (3, 3), normalize=True)

 

 normalize为False时不做归一化,及不做均值处理,越界后取255

box = cv2.boxFilter(cat, -1, (3, 3), normalize=False)

 高斯滤波:高斯模糊的卷积核里的数值是满足高斯分布的,相当于更重视中间的

gaussian = cv2.GaussianBlur(cat, (3, 3), 1)

中值滤波:相当于用中值代替

median = cv2.medianBlur(cat, 3)

 

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

Opencv的基础操作 的相关文章

随机推荐

  • 推荐几个网盘搜索工具,大大提高你的找资源效率

    前言 网盘已经成了我们存储文件 分享文件必不可少的工具 常用的比如百度云盘 网上绝大部分的资源都是在通过百度云传播 但是它并没有提供一个搜索接口供我们找资源 下面推荐几个我常用的网盘搜索网站 相信可以大大提升你的资源寻找效率 如风搜 htt
  • DeepWalk+word2vec的百科词条图嵌入可视化实战分析

    视频讲解 DeepWalk word2vec的百科词条图嵌入可视化实战分析 哔哩哔哩 bilibili 结果演示 完整代码数据 import networkx as nx 图数据挖掘 import gensim from gensim mo
  • 如何正确打开华为手机的 USB 调试和 完整 log 功能?

    华为手机 荣耀6 不能开启USB调试 借了一台华为荣耀手机 估计被重置过系统 电脑都连接不上 在关于里面开启开发者模式 并开启 USB 调试模式 但是刚打开 再次进来就变成不可选择的状态 并且不能调试 需要如下操作才能正常使用 USB 调试
  • 关于梯度下降的学习笔记

    什么是梯度下降 梯度下降可拆分为梯度 下降 在一阶函数中 某一点的梯度表示函数在该点处的导数 导数的正负号表示函数上升的方向 梯度下降是基于微积分中导数的概念 大部分的机器学习模型都有直接或间接地运用梯度下降的算法 1 梯度下降的目的 在机
  • OpenCV-Python学习(21)—— OpenCV 图像几何变换之图像翻转(cv.flip、np.flip)

    1 学习目标 学习 OpenCV 图像的翻转函数 cv flip 学习 NumPy 矩阵的反转函数 np flip 自己实现矩阵反转的函数 2 OpenCV 翻转 翻转也称镜像 是指将图像沿轴线进行轴对称变换 水平镜像是将图像沿垂直中轴线进
  • 【maven】mvn deploy 报错 Failed to deploy artifacts: Could not transfer artifact

    文章目录 1 场景1 1 1 概述 1 场景1 1 1 概述 因为在windows下 内网环境 然后升级了flink 但是包是外网拷贝进去的 拷贝到我的本地 现在本地升级好了 需要将jar包发布到内网的nexus机器中 但是执行命令报错如下
  • Vue3.0中引用子组件类型声明报错问题

    Vue3 0中引用子组件类型声明报错问题 报错原因 1 找不到组件模块或者找不到对应的类型声明 2 Typescript 只能理解 ts 文件 无法理解 vue 文件 解决方案 1 在项目根目录或 src 文件夹下创建一个后缀为 d ts
  • 第一个djiango项目(包含搭建环境)

    1 安装django框架 pip install django 2 创建项目命令 django admin startproject 项目名 django admin version 如果您看到Django版本号的输出 则表示安装成功 3
  • 数据分析(二) - Excel按一个单元格内的分隔符进行分行

    文章目录 场景 一 python 二 excel word 场景 办公室老师给了我一张Excel表 记录了每位同学的获奖情况 学号 姓名 奖项 加分 101 小明 ICPC世界冠军 国奖 优秀班干部 15 0 102 小亮 一作论文 数学建
  • vm manager failed to contact configuration server

    当用virt manager命令启动VM 管理工具是报错 vm manager failed to contact configuration server 如下办法解决了我的问题 读取dbus uuid dbus uuidgen get
  • 花费7元训练自己的GPT 2模型

    在上一篇博客中 我介绍了用Tensorflow来重现GPT 1的模型和训练的过程 这次我打算用Pytorch来重现GPT 2的模型并从头进行训练 GPT 2的模型相比GPT 1的改进并不多 主要在以下方面 1 GPT 2把layer nor
  • Gensim 中 word2vec 模型的恢复训练:载入存储模型并继续训练

    Gensim 中 word2vec 模型的恢复训练 本文为系列文章之一 前面的几篇请点击链接 NLP 利器 gensim 库基本特性介绍和安装方式 NLP 利器 Gensim 库的使用之 Word2Vec 模型案例演示 NLP 利器 Gen
  • 数据挖掘概述

    目录 1 数据挖掘概述 2 数据挖掘常用库 3 模型介绍 3 1 分类 3 2 聚类 3 3 回归 3 4 关联 3 5 模型集成 4 模型评估 ROC 曲线 5 模型应用 1 数据挖掘概述 数据挖掘 寻找数据中隐含的知识并用于产生商业价值
  • 无基础学c语言的打卡日记总论

    背景知识 笨人浙江考生 选课是政史地 目前在读大一 知道自己的专业学c并且还学数学分析和高等代数 一开始不以为意 学校用的教材是谭浩强老师的c语言程序设计 推荐的 小白友好 上课之前有很认真的自习课本 第一章好像是一个总论 里面有一些思想以
  • 在NPU上的切片操作x=x[:,::-1,:,:]不生效的分析解决

    1 系统环境 硬件环境 Ascend GPU CPU Ascend GPU MindSpore版本 1 9 0 执行模式 PyNative Graph 不限 Python版本 3 7 5 操作系统平台 Linux 2 报错信息 2 1 问题
  • winform下mapxtreme2008 v7.0 生成release版提示找不到dll问题

    在winform下基于mapxtreme2008 v7 0 生成了一个地图软件 用debug方式运行无误 但改为release版时提示缺少一大堆dll 如 无法从C Program Files x86 Common Files MapInf
  • 本地网站域名与联网冲突吐槽篇

    提示 前面是吐槽360使用bug 以及网站开发者使用弊端 解决冲突主要方法在后面 前言是解决电脑无法保存修改的hosts文件真相以及解决棒法 处理不行的话 只能一棒打死安全软件 前言 电脑里安装了360之类的安全软件 安全类软件为了安全 往
  • 时序预测

    时序预测 MATLAB实现时间序列回归之评估模型残差及统计分布 目录 时序预测 MATLAB实现时间序列回归之评估模型残差及统计分布 基本介绍 程序设计 异方差性 统计分布 学习总结 参考资料 致谢 基本介绍 残差分析的基本目的是检查 CL
  • 偷懒的一天-------Day83

    今天实在是学不进去 从公司里工作着也是浑浑噩噩的 虽然不是我媳妇生孩子 但这也是我们这个大家庭里的第一个孩子 我的亲大侄子啊 当然还可能是侄女 还在想名字 都想了好多了 还是有些激动有些紧张啊 偷懒一天 来码上几个字 草草写上至少我也知道我
  • Opencv的基础操作

    一 图像填充 首先定义图像显示函数 def cv show name img cv2 imshow name img cv2 waitKey 0 cv2 destroyAllWindows 图像读取 img cat cv2 imread c