opencv
文章平均质量分 87
夜半罟霖
人类诗意地栖居在大地之上,这是宇宙对于存在的回答
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python+OpenCV 实现图像位平面分层进行图像信息隐藏
本文的主题是介绍图像位平面相关知识,并依据不同位平面包含信息量的多寡设计了基于Python和Opencv的图像信息隐藏算法,实际就是位平面的叠加,可以适用于图片加水印等场景。原创 2023-06-26 17:53:31 · 1286 阅读 · 0 评论 -
图像特征-链码(Freeman code)
链码的python实现原创 2022-05-24 18:12:35 · 6231 阅读 · 6 评论 -
图像矩归一化
介绍了图像的矩归一化方法原创 2022-03-21 16:41:14 · 5951 阅读 · 2 评论 -
伪造微信截图工具(改)
朋友圈截图伪造原创 2022-01-08 16:04:53 · 5168 阅读 · 0 评论 -
Matplotlib显示灰度图
引言 matplotlib中的imshow()函数不能自动显示灰度图像,这一点应该是众所周知的,需要调用cmap=“gray"以进行设置,但是cmap="gray"实际上并不是如opencv中的imshow函数一样将单通道图显示为灰度图,私以为是引入了灰度图的灰度量化概念,但并不直接对应灰度,证明见正文。一、测试 设置一全1.0的图像(全白),和一全白背景叠加黑色条柱的图像,使用plt.imshow()显示。代码:import matplotlib.pyplot as pltimport num原创 2021-10-02 21:01:24 · 7347 阅读 · 0 评论 -
Opencv学习笔记(十四)轮廓检测
引言: 本次轮廓检测的介绍基于opencv中的findContours()函数,首先介绍了它的数学原理,然后对其参数进行分析,最后结合drawContours()函数给出了一个轮廓检测的运用实例。大纲一、轮廓检测原理二、轮廓在opencv中的应用一、轮廓检测原理opencv中轮廓检测函数的原理基于一篇早期的图像边缘跟踪论文:《Topological Structural Analysis of Digitized Binary Images》,有兴趣的人可以去找来学习一下,此次将大体介绍一下其中关.原创 2020-10-24 23:12:36 · 3871 阅读 · 0 评论 -
Opencv学习笔记(十三)直方图均衡化
大纲一、直方图均衡化数学原理介绍二、直方图均衡化使用实例一、直方图均衡化数学原理介绍首先介绍图像直方图的概念,图像的直方图指的是以图像的灰度值(划分)为横轴,图像中所有像素中对应该灰度值(划分)出现的数目(也可归一化)作为纵轴,所构建出的一种直方图,它所描述的是图片整体范围内灰度值的分布情况。如果一张图片的灰度分布过于的集中,呈现出的对比度就较低,人眼难以分辨出,所以我们需要进行直方图均衡化,使得图像的灰度值更加均匀的分布在色彩空间内,大致实现方式则是将像素数目多且更亮的灰度值进行扩展,让它变得更亮;对原创 2020-09-09 17:44:59 · 562 阅读 · 0 评论 -
Opencv学习笔记(十二)重映射和仿射变换
重映射重映射介绍使用实例重映射介绍重映射,就是将一副图像上某些位置上的像素移动到一个新的位置以构成一幅全新图像的过程,例如我们对原始图像上的图像上的每一个像素进行如下操作:dst(x,y)=src(src.cols−x,y)dst(x,y)=src(src.cols-x,y)dst(x,y)=src(src.cols−x,y)就能够得到一张原图水平翻转之后的图片。算法实现方面由重映射原理可知:我们要知道处理后图片的每个像素点坐标与原图上该像素点的坐标有何映射关系。这一形式可以通过建立变换后的坐标矩原创 2020-09-06 18:00:57 · 1004 阅读 · 0 评论 -
Opencv学习笔记(十一)霍夫圆检测
参考代码opencv —— HoughCircles 霍夫圆变换原理及圆检测Opencv2.4.9源码分析——HoughCirclesOpenCV霍夫变换系列(中篇)-霍夫圆变换原创 2020-09-02 21:33:54 · 1452 阅读 · 0 评论 -
Opencv学习笔记(十)霍夫直线检测
参考文献:霍夫线/圆变换从原理到源码详解LSD直线检测和霍夫线变换的学习建议Opencv源代码分析HoughLines『OpenCV3』霍夫变换原理及实现原创 2020-08-26 17:43:08 · 1780 阅读 · 0 评论 -
Opencv学习笔记(九)边缘检测
大纲一、Sobel算子二、Scharr滤波器三、Laplacian算子四、Canny边缘检测一、Sobel算子二、Scharr滤波器三、Laplacian算子四、Canny边缘检测参考文献Canny边缘检测算法的原理与实现图像梯度算子的本质图像梯度的基本原理Larger Sobel Keneral5×5 Sobel...原创 2020-08-20 10:40:39 · 644 阅读 · 0 评论 -
Opencv学习笔记(八)阈值化
大纲一、固定阈值化函数二、自适应阈值化函数一、固定阈值化函数阈值化函数就是指当图像某点的像素值高于或者低于某一个值(阈值)时统一取一值,其他时候保持不变或者变为0.通过这一方法我们可以从一张图片中得到我我们想要的部分,前提是该部分与背景灰度值有较大的差异。这一过程可以通过Opnecv中的函数thr二、自适应阈值化函数...原创 2020-08-17 21:07:36 · 1150 阅读 · 0 评论 -
Opencv学习笔记(七)图像尺寸改变及插值方法介绍
大纲一、resize()函数介绍二、插值方法介绍1.最近邻插值2.双线性插值3.双三次插值4.区域插值5.兰索斯插值一、resize()函数介绍二、插值方法介绍1.最近邻插值2.双线性插值3.双三次插值4.区域插值5.兰索斯插值参考文献最近邻插值、双线性插值、双三次插值OpenCV中resize函数五种插值算法的实现过程图像超分(插值方法)最近邻、双线性、双三次插值算法双三次插值算法(bicubic interpolation)与图形学和计算方法的关系opencv中的resize原创 2020-08-17 15:48:56 · 1185 阅读 · 0 评论 -
Opencv学习笔记(六)图像金字塔
大纲一、高斯金字塔1.数学原理讲解i.下采样2.在图像缩放中的应用二、拉普拉斯金字塔1.数学原理一、高斯金字塔1.数学原理讲解标准意义上的高斯金字塔指的是不同分辨率的同一张图像所组成的图像结构,金字塔从上往下生成,图片的分辨率不断增大,称作上采样;金字塔从下往上生成,图片的分辨率不断减下,称作下采样。i.下采样下采样是对图像进行缩小的过程,期间图像分辨率不断降低,从下一层往上一层生成的过程分为两步 (一)对底层图像进行高斯卷积,通常选用归一化5×5高斯卷积和进行卷积;(二)删除所有的原创 2020-08-15 22:38:55 · 2848 阅读 · 0 评论 -
Opencv学习笔记(五)漫水填充参数详解附验证代码
大纲一、漫水填充1. 基本原理2.参数介绍及代码二级目录三级目录一、漫水填充1. 基本原理漫水填充就是自动选择与所设“种子"相邻的区域,并将其替换成预设的颜色。可以用来标记或者分离图片中某一块相似区域,也可以用来从输入图像中获取掩码区域。2.参数介绍及代码OpenCV中漫水填充的函数原型为:int floodFill( InputOutputArray image, InputOutputArray mask,Point seedPoint, Scalar newVal, CV_OUT Rec原创 2020-08-13 18:12:45 · 770 阅读 · 0 评论 -
Opencv学习笔记(四)形态学运算
大纲一.腐蚀与膨胀二、开运算与闭运算三、顶帽与黑帽四、形态学梯度五、总函数介绍一.腐蚀与膨胀腐蚀和膨胀是形态学运算中的基本操作,也是后续要介绍的运算的基础,首先腐蚀与膨胀从字面意义上来理解,指的是对于图片中灰度较高的部分(多通道独立处理)扩张或者收缩,即经过操作后亮域变少\多。实现方法是通过窗函数在原图上滑动,将卷积核(可以是任意大小、形状)范围内最大值(膨胀)或者最小值(腐蚀)作为锚点的像素值Opencv的膨胀函数原型如下:dilate( InputArray src, OutputArray d原创 2020-08-11 22:51:32 · 943 阅读 · 0 评论 -
Opencv学习笔记(三)线性及非线性滤波
大纲1.滤波综述2. 方框滤波3. 均值滤波4. 高斯滤波5. 中值滤波6. 双边滤波一、滤波综述图像的滤波指的是在尽量保证图像细节特征的的情况下对图像中的噪声进行抑制,又因为图像的能量大部分集中在低频或者中频的区域(图像大部分区域是连贯的,波动不大,频率),而高频部分则大多为边缘信息(图像变换快)或者是噪声。所以滤波器分为两种,低通滤波和高通滤波,前者的作用就是保证低频区域的稳定,尽量去除噪声,但也不可避免的带来边缘信息的丧失,所以也称作“平滑”或者“模糊”;后者则着重于增强图像的边缘原创 2020-08-10 18:33:45 · 741 阅读 · 0 评论 -
DFT参数介绍及在图像卷积中的应用
前情提要为啥我要在另一篇博客里已经详细写过DFT的情况下另起一篇单独介绍呢,这是因为我发现站内很多博客都没有对DFT的参数及输出值的一个点给出明确解释:就是在对某张图像进行傅立叶变换时需要对其进行通道扩充以满足变换后有实部虚部的需求,而在图像卷积时却直接对原图(单通道灰度)图进行傅立叶变换即可。为了方便后人的查找,单独列出来供大家参考。大纲dft参数介绍示例代码参数介绍DFT原型如下:dft(InputArray src, OutputArray dst, int flags =原创 2020-08-08 23:25:47 · 1610 阅读 · 0 评论 -
Opencv学习笔记(二)core模块的使用
大纲1.如何进行图像混合2. 如何进行图像拼接3. 如何进行多通道图像分离和混合4. 如何调整图像对比度和亮度5. 如何对图像进行傅立叶变换一、图像混合图像混合的核心在于圈出感兴趣区域和addWeighted()函数的使用,当两张图像大小不一致时,就需要先在较大的图上圈出待混合区域,再通过addWeighted()函数与小图进行叠加。圈出感兴趣区域的方法有两种,一种是通过在通过在原图上截取Rect类的区域,如:Roi=srcImg(Rect(x,y,width,height));另原创 2020-08-08 21:46:36 · 728 阅读 · 0 评论 -
FFT介绍及python源码编写
大纲FFT的来源DFTFFT与DFT的关系FFT的python实现一、FFT的来源DFT要了解DFT,就必须要先搞懂DFT,FFT可以看作是为了计算方便而简化之后的DFT,而要了解DFT就需要了解它和DTFT和DFS的关系,关于DTFT和DFS的知识网络上已有许多介绍,不再赘述。DFT即离散傅立叶变换,它的产生是为了解决DTFT(离散时间傅立叶变换)在频域上连续的问题。众所周知,计算机所能处理的只有离散、有限长的序列,这样就首先排除了我们在信号与系统中所熟知的FS、FT、DFS的应用,但原创 2020-08-06 22:53:25 · 3982 阅读 · 5 评论 -
Opencv中常用类的介绍
大纲Mat类Point类Scalar类Size类Rect类一、Mat类Mat是Opencv中的通用矩阵类型,我们通常将它作为图片的容器,它包含了矩阵头(包含矩阵尺寸,储存方法,储存地址等信息)和指向储存所有点值的指针。其创建方法如下:1.使用Mat()构造函数对于二维多通道的Mat类型,我们通常可以用如下形式来构建:Mat test(2,3,CV_8UC3,Scalar(0,22,23));前两个参数给出了矩阵的行列信息,第三个参数给出了矩阵的通道数目以及位深,最后一个参数则原创 2020-08-01 09:53:39 · 1212 阅读 · 0 评论 -
Opencv学习笔记(一)higui模块使用
大纲1.图像的载入、显示、输出2.滑动条的创建与使用3.鼠标操作的使用一、图像的载入、显示、输出图像的载入使用imread()函数,其原型如下:Mat imread(const String& filename,int flags = 1);第一个参数即为所要读取图片的地址,第二个参数为读取图像颜色类型,默认颜色为1,其可能取值对应结果如下:flag=-1(<0)时,原位深度,原通道flag=0时,8位深度,单通道flag=1时,8位深度,3通道flag=2时,原创 2020-07-25 23:21:04 · 850 阅读 · 0 评论 -
opencv中Vec类的小白向介绍
大纲前置知识:C++中类(class)的相关知识前置知识:C++中模板(template)的相关知识opencv中Vec类的定义及源码一、C++中的类“类”是对对象的抽象,C++中的类实际上就是对一类具有相同特性的对象的交集,类相当于一种新的数据类型,数据类型不占用存储空间,用类型定义一个实体的时候,才会为它分配存储空间。1.类的定义如下:class 类名{成员类表};成员列表是类成员的集合,成员可以无限多,也可以没有;可以是数据,也可以是函数,成员函数如普通函数一样可以进原创 2020-07-24 22:39:21 · 2132 阅读 · 2 评论
分享