Opencv_C++
文章平均质量分 87
Opencv的C++学习
Fioman_Hammer
探寻事实以及事实背后发生的真相,是做成一切事情的依据!
展开
-
Opencv_14 直方图以及其应用
文章目录一. 图像直方图① 什么是图像直方图② 灰度图像的直方图的绘制③ 彩色图像的直方图的绘制二. 直方图均衡化一. 图像直方图① 什么是图像直方图加入图像是灰度图像,则其直方图就是灰度级的函数,描述的是每种灰度级像素的个数,反应到图像上就是每种灰度出现的频率.横坐标是灰度级,纵坐标是出现的频率(对于图形来说,就是这个灰度级在图像中出现的次数)非归一化的直方图数学表达: 其中rk为图像的灰度值,比如常见的是0~255之间的某个值,nk为图像中灰度级为rk的像素的个数.归一化的直方图什么叫原创 2022-05-21 10:02:38 · 730 阅读 · 0 评论 -
Opencv_13 图像滤波(低通滤波图像平滑去噪)
文章目录一. 图像滤波简介① 为什么图像是波?② 图像的频率③ 滤波器二. 低通滤波之线性滤波① 方框滤波② 均值滤波③ 高斯滤波一. 图像滤波简介① 为什么图像是波?我们都知道,图像由像素组成.下图是一张400 * 400的图片,一共包含了16万个像素点.每个像素的颜色,可以用红绿蓝表示,大小范围是0~255.如果把每一行所有像素(上例是400个)的红,绿,蓝的值,依次画成三条曲线,六得到下面的图形:可以看到每条曲线都在不停地上下波动.有些区域波动比较小,有些区域波动不叫大,比如54,和3原创 2022-05-19 10:33:43 · 8399 阅读 · 2 评论 -
Opencv_12 形态学操作
文章目录一. 连通性一. 连通性在图像中,最小的单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有3中:4邻接,8邻接和D邻接原创 2022-05-17 10:48:34 · 755 阅读 · 0 评论 -
Opencv_11 阈值分割
文章目录一. 全局阈值分割二. Otsu阈值分割(大律法)① 大律法阈值分割的原理三. 自适应阈值(局部阈值)① 自适应阈值分割的原理② 自适应阈值分割的函数原型③ 自适应阈值分割代码示例一. 全局阈值分割全局阈值分割指的是使用一个固定的阈值,大于这个阈值的设定为一个颜色,小于或者等于这个阈值的像素设定为另外一种颜色.函数原型:double threshold( InputArray src, OutputArray dst, doubl原创 2022-05-16 15:24:47 · 1386 阅读 · 0 评论 -
Opencv_10 图像的透视变换
文章目录一. 透视变换的原理二. 透视变换实现① 函数原型:一. 透视变换的原理透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plance),也称为投影映射(Projective Mapping).通用的变换公式为:透视变换矩阵(x,y,1)是原点, [X,Y,Z]是变换后的点位这是一个二维空间变换到三维空间的转换,因为图像在二维平面,故除以Z二. 透视变换实现① 函数原型:...原创 2022-05-16 09:41:25 · 2524 阅读 · 0 评论 -
Opencv_09 图像的几何变换
文章目录一. 平移① 平移的原理② 平移实现一. 平移① 平移的原理平移就是将图像中的所有的点按照平移量水平或者垂直的移动.假设要水平右侧移动100个像素,向下移动50个像素,则原图像和目标图像的对应关系为:dst(x,y) = src(x + 100,y + 50) 就是一个坐标变换,将原来的位置(0,0)的像素值,赋值给位置是(100,50)的位置,然后后面的像素都按照这种规则替换可以转换为dst(x,y) = src(x * 1 + y * 0 + 100,x * 0 + y原创 2022-05-13 15:07:50 · 1233 阅读 · 0 评论 -
Opencv_08 图像几何形状绘制
文章目录一. 画直线一. 画直线函数原型:void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);函数功能:画一条直线参数:img: 要画的原图像pt1: 直线的起点pt2: 直线的终点color:直线的颜色thicknes原创 2022-05-09 16:16:36 · 994 阅读 · 0 评论 -
Opencv_07 图像的像素值统计
文章目录一. 像素值统计的需求二. 像素值统计的API① 获取像素最大值,最小值,像素最大值位置,像素最小值为的API② 获取像素的均值和方差的API③ 统计非零像素的个数一. 像素值统计的需求统计一个图像中的像素在工作中很有必要的,因为图像处理过程中主要就是和像素打交道.主要统计的数据:像素最大值像素最小值像素最小值的位置像素最大值的位置像素均值像素方差(像素方差,是所有像素和像素均值之间的平方的平均数)二. 像素值统计的API① 获取像素最大值,最小值,像素最大值位置,像素原创 2022-04-29 17:01:25 · 7171 阅读 · 0 评论 -
Opencv_06 图像的逻辑操作
文章目录一. 按位与操作① 按位与说明② 按位或操作③ 按位异或操作④ 取反 bitwise_not一. 按位与操作① 按位与说明将对应像素位置的像素值进行位与操作.两幅图像必须大小和类型相同,否则报错可以提供一个掩膜MaskMask的作用: Mask掩膜运算,本质上就是将原来的图像和掩膜进行按位与运算;注意:不是简单的按位与运算:如果和掩膜按位与之后结果为真,就保留原图像素如果为假,结果就是0如果为真,可能就转换为了1,和原来的数据进行位与Mask只能是二维矩阵,原创 2022-04-29 11:11:06 · 397 阅读 · 0 评论 -
Opencv_05 图像像素的读写和算术操作
文章目录一. 像素访问的几种方法对比① 使用下标M.at<>(i,j)② 指针ptr<>(row)访问图像像素③ 使用迭代器iterator访问图像像素④ 使用ptr<>(row,cols)访问图像像素一. 像素访问的几种方法对比① 使用下标M.at<>(i,j)单通道:灰度图m.at<uchar>(i,j); // 第i行,第j列三通道:彩色图m.at<Vec3b>(i,j)[0] // B分量m.at<Vec3原创 2022-04-28 16:13:18 · 4104 阅读 · 0 评论 -
Opencv_04 图像的数据类型Mat详解
文章目录一. Mat数据类型介绍二. Mat的常用操作① 创建Mat对象,常用的Mat构造函数② Mat的行与列相关的操作③ 拷贝和转换④ Mat类常用的成员属性⑤ 图像的基本信息一. Mat数据类型介绍首先Mat数据你不需要手动管理它的内存,如果你传递了一个已经存在的Mat对象,它已经为矩阵分配了所需的内存空间,它将被重用.Mat包含两个数据部分的类:矩阵头(包含诸如矩阵大小,用于存储的方法,存储的矩阵地址等信息)和指向包含像素值矩阵(根据选择的存储方法而有不同的维度)的指针.矩阵头大小是个常量原创 2022-04-27 15:08:20 · 7410 阅读 · 1 评论 -
Opencv_03 图像色彩空间转换
文章目录一. 色彩空间介绍① RGB/BGR色彩空间② 为什么Opencv中采用的是BGR③ HSV色彩空间二.色彩空间转换③ cvtColor()函数原型一. 色彩空间介绍① RGB/BGR色彩空间计算机色彩显示器和彩色电视机显示色彩的原理一样,都是采用R,G,B相加混色的原理,通过发射出三种不同强度的电子束,使得屏幕内侧覆盖的红,吕蓝磷光材料发光而产生色彩.这种色彩的表示方法称为RGB色彩空间表示.在RGB颜色空间中,任意色光F都可以用RGB三色不同分量的相加混合而成:F = r[R] +原创 2022-04-26 09:44:13 · 4347 阅读 · 0 评论 -
Opencv_02 图像的读取和显示
文章目录一. 读取图片① 函数原型② 代码示例二. 显示图片① imshow()函数原型② namewindow()函数原型三. 保存图片① imwrite() 函数原型四. 等待函数① waitKey()原型五. 案例测试一. 读取图片① 函数原型Mat cv::imread(const String& filename,int flags = IMREAD_COLOR);参数filename: 文件路径,要读取的文件的路径flags: 读取的方式,默认是彩色的方式读取,即按原创 2022-04-25 16:18:35 · 1591 阅读 · 0 评论 -
Opencv_01 vs2022_opencv环境搭建
文章目录一. 安装Opencv_4.5.1二. 配置环境三. 配置环境测试① 编制头文件② 测试代码一. 安装Opencv_4.5.1去官网下载opencv_4.5.1opencv官网建议使用迅雷下载,普通下载如果被墙了,下载速度很慢.下载完成之后,点击安装,安装完之后得到如下的目录:二. 配置环境打开visual studio 创建一个空项目然后下面图示部分改成release和x64点击视图->属性页 得到如下的界面点击VC++ 目录.配置包含目原创 2022-04-25 11:38:22 · 2054 阅读 · 0 评论