![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV
文章平均质量分 55
阿超没有蛀牙
软件测试工程师
展开
-
C++ opencv之图像去噪(blur,GaussianBlur,medianBlur,fastNlMeansDenoisingColored)
上篇博客我们学到了图像添加噪声,这篇我们来学习图像去噪声。OpenCV中常见的图像去噪声的方法有:- 均值去噪声- 高斯模糊去噪声- 非局部均值去噪声- 双边滤波去噪声- 形态学去噪声一、主要内容这里均值去噪声、高斯模糊之前也讲过了,后面两个方法之后再讲。1.1 均值去噪声1.2 高斯模糊去噪声1.3 非局部均值去噪声L-Means的全称是:Non-Local Means,直译过来是非局部平均,在2005年由Baudes提出,该算法使用自然图像中普遍存在的冗余信息来去噪声。与常用的原创 2021-01-06 18:48:52 · 7079 阅读 · 6 评论 -
C++ opencv之椒盐噪声与高斯噪声生成
这篇博客我们来学习一下椒盐噪声和高斯噪声的生成。一、主要内容1.1 噪声的产生图像噪声产生的原因很复杂,有的可能是数字信号在传输过程中发生了丢失或者受到干扰,有的是成像设备或者环境本身导致成像质量不稳定,反应到图像上就是图像的亮度与颜色呈现某种程度的不一致性。1.2 噪声的分类从噪声的类型上,常见的图像噪声可以分为如下几种:椒盐噪声是一种随机在图像中出现的稀疏分布的黑白像素点, 对椒盐噪声一种有效的去噪手段就是图像中值滤波高斯噪声/符合高斯分布一般会在数码相机的图像采集(acquisit原创 2021-01-06 00:07:12 · 2677 阅读 · 0 评论 -
C++ opencv之中值滤波(medianBlur)
这篇博客我们主要来学习中值滤波。一、主要内容中值滤波是一种典型的非线性滤波,是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,让周围的像素值接近真实的值从而消除孤立的噪声点。该方法在取出脉冲噪声、椒盐噪声的同时能保留图像的边缘细节。这些优良特性是线性滤波所不具备的。中值滤波首先也得生成一个滤波模板,将该模板内的各像素值进行排序,生成单调上升或单调下降的二维数据序列,二维中值滤波输出为g(x, y)=medf{f(x-k, y-1),原创 2021-01-05 20:22:47 · 1430 阅读 · 0 评论 -
C++ opencv之图像均值与高斯模糊(Blur,GaussianBlur)
这篇博客来学习一下图像均值与高斯模糊。一、主要内容1.1 均值模糊这是一个平滑图片的函数,它将一个区域内所有点的灰度值的平均值作为这个点的灰度值。像该函数对领域点的灰度值进行权重相加最后设置灰度值,这样的操作又叫卷积,这样的滤波器叫线性滤波器。1.2 高斯模糊高斯滤波器能够有效的抑制噪声,平滑图像。高斯滤波器相比于均值滤波器对图像个模糊程度较小。高斯模糊和均值模糊其原理上的唯一区别只是在于卷积核的值不同罢了,高斯卷积核矩阵值服从二维高斯函数也就是说一个图像与服从二维高斯分布的函数做卷积,由于原创 2021-01-04 22:49:27 · 6088 阅读 · 0 评论 -
C++ opencv之图像卷积操作
这篇博客我们来学习图像卷积操作(基于opencv)一、概念图像卷积可以看成是一个窗口区域在另外一个大的图像上移动,对每个窗口覆盖的区域都进行点乘得到的值作为中心像素点的输出值。窗口的移动是从左到右,从上到下。窗口可以理解成一个指定大小的二维矩阵,里面有预先指定的值。二、API函数2.1 函数原型void cv::blur(InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int b原创 2021-01-04 18:42:46 · 1788 阅读 · 0 评论 -
C++ opencv之直方图反向投影(calcBackProject)
这篇博客我们学习直方图反向投影。一、主要内容1.1 概述反向投影是一种记录给定图像中的像素点如何适应直方图模型像素分布的方式,简单来讲,反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的特征。反向投影在某一位置的值就是原图对应位置像素值在原图像中的总数目。1.2 一般步骤反向投影是将特征“反映”到图像上,对于物体特征识别和分割有着很大的作用。进行反向投影的一般步骤: 1、获取直方图的源,比如我们要对手进行反向投影,那么直方图的源就是肤色的ROI 2、获取需要反向投影的图原创 2021-01-04 18:18:52 · 741 阅读 · 0 评论 -
C++ opencv之图像直方图比较(compareHist)
这篇博客主要来学习图像直方图比较。一、主要内容1.1 目的图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度。1.2 函数原型void cv::calcHist (const Mat * images, int nimages, const int * channels, InputArray mask, OutputArray hist, int dims,原创 2020-12-28 17:04:34 · 1983 阅读 · 0 评论 -
C++ opencv之图像直方图均衡化(equalizeHist)
这篇博客我们来学习C++opencv之图像直方图均衡化。一、主要内容1.1 直方图均衡化直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法.1.2 作用用于提高图像的质量1.3 函数原型C++: void equalizeHist(InputArray src, OutputArray dst)二、代码演示#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;us原创 2020-12-28 10:40:59 · 6721 阅读 · 2 评论 -
C++ opencv之图像直方图(calcHist)
这篇博客我们主要来学习图像直方图。图像直方图是图像像素值的统计学特征、计算代价较小,具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类、反向投影跟踪。Bins是指直方图的大小范围, 对于像素值取值在0~255之间的,最少有256个bin,此外还可以有16、32、48、128等,256除以bin的大小应该是整数倍。calcHist(&bgr_plane[0], 1, 0, Mat(), b_hist, 1, bins原创 2020-12-25 15:47:05 · 5820 阅读 · 2 评论 -
C++ opencv之图像插值法
这篇博客主要将图像插值算法。一、主要方法主要是以下四种:最常见四种插值算法INTER_NEAREST = 0INTER_LINEAR = 1INTER_CUBIC = 2INTER_LANCZOS4 = 4相关的应用场景几何变换、透视变换、插值计算新像素resize,如果size有值,使用size做放缩插值,否则根据fx与fy卷积。二、代码演示#include<opencv2/opencv.hpp>#include<iostream>using nam原创 2020-12-24 16:14:07 · 1314 阅读 · 2 评论 -
C++ opencv之图像翻转(flip)
这篇博客主要学习opencv中图像的翻转。主要是一个函数:flip一、函数简介1.1函数原型void cv::flip( InputArray src, OutputArray dst, int flipCode);参数说明:InputArray src:要处理的原始图像OutputArray dst:是和src具有相同大小、类型的目标图像int flipCode:旋转类型旋转说明:flipCode = 0:x轴方向旋转flipCode > 0:原创 2020-12-24 15:40:20 · 3929 阅读 · 0 评论 -
C++ opencv之视频读写(VideoCapture,VideoWriter)
这篇博客主要讲解OpenCV中视频读写。主要涉及到两个API函数:VideoCaptureVideoWriter一、函数简介1.1 VideoCapture视频文件读取、摄像头读取、视频流读取VideoCapture既支持从视频文件(.avi , .mpg格式)读取,也支持直接从摄像机(比如电脑自带摄像头)中读取。要想获取视频需要先创建一个VideoCapture对象,VideoCapture对象的创建方式有以下三种:**1、是从文件(.MPG或.AVI格式)中读取视频,**对象创建以后,O原创 2020-12-24 11:33:45 · 28918 阅读 · 0 评论 -
C++ opencv之像素值统计(minMaxLoc,meanStdDev)
一、引言这篇博客的主要知识点为:像素值统计最小(min)最大(max)均值(mean)标准方差(standard deviation)API 的知识点为:最大最小值minMaxLoc计算均值与标准方差meanStdDev二、主要内容主要有两个API函数:2.1 minMaxLoc2.1.1 函数原型void minMaxLoc( const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, P原创 2020-12-23 15:44:20 · 3623 阅读 · 0 评论 -
C++ opencv之 通道分离与合并(split,merge,mixChannels)
文章目录一、知识点二、函数原型1、split2、merge3、mixChannels三、代码四、输出图片1、通道分离2、通道合并3、通道混合这篇博客我们来学习opencv的通道分离与合并(split,merge)两个函数:一、知识点OpenCV中默认imread函数加载图像文件,加载进来的是三通道彩色图像,色彩空间是RGB色彩空间、通道顺序是BGR(蓝色、绿色、红色)、对于三通道的图像OpenCV中提供了两个API函数用以实现通道分离与合并。- split // 通道分类- merge // 通道原创 2020-12-03 16:11:39 · 3179 阅读 · 0 评论 -
C++ opencv之像素操作之逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)
这篇博客我们来学习像素操作之逻辑操作。一、知识点主要的知识点是:对图像中的位操作:- bitwise_and //按位与- bitwise_xor //按位异或- bitwise_or //按位或取反操作:- bitwise_not //取反二、函数原型1、按位与操作bitwise_and(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst原创 2020-12-03 15:28:27 · 6497 阅读 · 2 评论 -
C++ opencv之OpenCV自带颜色表操作
这篇博客我们来学习C++ opencv之OpenCV自带颜色表操作一、API函数主要的API函数为我的理解是applyColorMap(输入图片,输出图片,需要遍历的数组)这是一个伪色彩函数。1、函数说明1、函数说明:(1)void applyColorMap(InputArray src, OutputArray dst, int colormap)src: 源图像(灰度图或彩色图(CV_8UC1 or CV_8UC3))。dst: 在源图像上进行色彩映射后的结果图像。colormap原创 2020-12-01 16:33:06 · 1733 阅读 · 0 评论 -
C++ opencv之键盘响应操作
文章目录一、引言二、键盘响应操作Demo三、效果演示这篇博客来学习一下键盘响应操作一、引言这一块内容没有新的API函数,就是通过设置键盘上的按键与opencv中显示的函数形成键盘相应的事件来完成的,我们来看看键盘上一些常用的键盘键值表:这里面就有我们下面代码中出现的esc按键,对应的键值表的数字为27,我们定义一个整型的c,当c=27时候跳出循环。二、键盘响应操作Demovoid QuickDemo::key_Demo(Mat &image){ Mat gray,hsv;原创 2020-12-01 11:05:46 · 4263 阅读 · 3 评论 -
C++ opencv之LUT的作用与用法
文章目录一、函数原型二、代码三、参数修改四、颜色对比这篇博客我们来学习LUT的作用与用法主要知识:Look Up Table(LUT)查找表解释了LUT查找表的作用与用法,代码实现与API介绍一、函数原型API函数原型:- applyColorMap(src, dst, COLORMAP)- src 表示输入图像- dst表示输出图像- 匹配到的颜色LUT, OpenCV支持13种颜色风格的查找表映射二、代码下面附一下这个用法的Demo代码:void QuickDemo::cu原创 2020-12-01 10:19:46 · 1576 阅读 · 1 评论 -
C++ opencv之TrackBar滚动条操作演示-调整图像亮度
文章目录一、了解createTrackbar()函数1、函数原型2、参数说明二、使用样例这篇博客我们来学习一下opencv中TrackBar滚动条操作演示-调整图像亮度。一、了解createTrackbar()函数1、函数原型int createTrackbar(conststring& trackbarname, conststring& winname, int* value, int count, TrackbarCallback onC原创 2020-11-27 10:19:21 · 990 阅读 · 0 评论 -
C++ opencv之图像像素的算术操作
这节课我们来学习图像像素的读写操作。下面来放一下这个demo:一、像素的加减乘除操作1、加法操作:void QuickDemo::operators_Demo(Mat &image){ Mat dst; dst = image + Scalar(50, 50, 50); imshow("加法操作", dst);}输出结果为:可以明显的感受到右边这幅图,亮度增强了。opencv也有现成的api函数像素加法的函数可以使用://第一个参数为第一张图片,第二个参数为第二张图片原创 2020-11-25 10:41:01 · 1604 阅读 · 0 评论 -
C++ opencv之图像像素的读写操作
这节课我们来学习图像像素的读写操作。主要内容包括C++ 中的像素遍历与访问。主要分为:1、数组遍历2、指针遍历一、数组遍历还是采用多文件调用的方式://图像像素的读写操作(基于数组下标)void QuickDemo::pixel_visit_Demo(Mat &image){ int w = image.cols; int h = image.rows; int dims = image.channels(); for (int row = 0; row < h; r原创 2020-11-24 11:34:43 · 1687 阅读 · 0 评论 -
C++ opencv之图像对象的创建与赋值
文章目录一、引入二、克隆与拷贝三、创建图像一、引入首先我们来看一下Mat 的基本结构其中数据部分为像素的值的一个集合,头部就是包含图像的一个属性,比如大小、宽高、类型、通道数等等。在对他进行赋值操作的时候,只是相当于把内存的指针重新指向了原来的数据,本质上还是同一个DataBlock,当进行克隆或者拷贝操作的时候,就会把这个Mat中所有的数据复制一份,以供使用。二、克隆与拷贝还是跟以前一样,采用多文件调用的方式。声明函数的demo放在quickopencv.h文件里,实现放在quickdemo原创 2020-11-23 20:42:27 · 3834 阅读 · 0 评论 -
C++ opencv之图像色彩空间转换
这一篇我们主要学习两个函数:cvtColor和imwrite一、函数介绍1、cvtColorcvtColor是图像色彩空间转换函数:COLOR_BGR2GRAY=6; //彩色到灰度COLOR_GRAY2BGR=8; //灰度到彩色COLOR_BGR2HSV=40; //彩色到HSVCOLOR_HSV2BGR=54; //HSV到彩色函数定义:C++: void cvtColor(InputArray src, OutputArray dst, int c原创 2020-11-17 10:40:34 · 2371 阅读 · 0 评论 -
图像像素类型转换与归一化
图像的像素归一化是一个图像的预处理过程。一、引入众所周知图像是由像素组成的,灰度图是由单个像素矩阵组成的,而彩色图像是由三个矩阵所构成的,即我们常说的红,绿,蓝三通道。每个像素矩阵的取值均是0-255之间的整数,虽然可以直接将原始图像的像素真实值直接作为神经网络模型的训练数据,但是这可能会给我们模型的训练过程带来一些问题,因为在深度神经网络训练时一般使用较小的权重值来进行拟合,而当训练数据的值是较大整数值时,可能会减慢模型训练的过程。如果我们在将图像输入到神经网络之前对图像做像素值归一化的处理,即原创 2020-11-09 10:41:54 · 1523 阅读 · 0 评论 -
C++ OpenCV之图像色彩空间转换。
这篇博客主要写OpenCV中图像色彩空间转换。主要涉及到两个函数:1.色彩空间转换函数:cvtColorCOLOR_BGE2GRAY = 6 彩色到灰度COLOR_GRAY2BGR = 6 彩色到灰度COLOR_BGE2GRAY = 6 彩色到灰度COLOR_BGE2GRAY = 6 彩色到灰度2.图像保存函数 :imwrite第一个参数是图像保存路径第一个参数是图像内存对象下面附一下我的各个文件的代码:首先是我的源文件,源文件的内容主要是图片的获取以及类的使用。#include &原创 2020-10-22 17:52:22 · 1020 阅读 · 0 评论 -
C++ opencv4与VS2015之环境配置与搭建(超详细!!!)
C++ opencv4之环境配置与搭建这个专栏是自己学习与应用的专栏,学习的来源是b站贾志刚老师的视频课OpenCV学堂原创 2020-10-21 16:45:47 · 1838 阅读 · 0 评论