opencv
文章平均质量分 76
IO-MY
这个作者很懒,什么都没留下…
展开
-
opencv2函数学习之blur,GaussianBlur,medianBlur和bilateralFilter:实现图像平滑处理
opencv2函数学习之blur,GaussianBlur,medianBlur和bilateralFilter:实现图像平滑处理在opencv2中,可能使用blur对图像进行平滑处理,这种方法就是最简单的求平均数。平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法。平滑处理的用途有很多, 但是在很多地方我们仅仅关注它减少噪声的功用。平滑处理时需要用到一个 滤波器 。 最常用的滤波器是 线...原创 2018-06-11 13:10:13 · 735 阅读 · 0 评论 -
opencvC++学习7绘制形状与文字
介绍:使用cv::Point与cv::Scalar绘制线、矩形、园、椭圆等基本几何形状代码:#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;Mat bgImage;void MyLines();void MyRectangle();...原创 2018-06-09 12:39:12 · 396 阅读 · 0 评论 -
opencvC++学习5图像混合
理论:线性混合操作公式:API:void cvAddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,double gamma, CvArr* dst );代码:#include <opencv2\opencv.hpp>#include <iostream>using nam...原创 2018-06-09 13:29:55 · 205 阅读 · 0 评论 -
opencvC++学习10腐蚀和膨胀
形态学操作(morphology operators)-膨胀图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段形态学操作-膨胀跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构...原创 2018-06-09 15:17:30 · 921 阅读 · 0 评论 -
opencvC++学习1加载、修改、保存图像
opencvC++学习1加载、修改、保存图像 加载图像(用cv::imread)imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称第二个参数,表示加载的图像是什么类型,支持常见的三个参数值IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来IMREA...原创 2018-06-29 14:17:34 · 343 阅读 · 0 评论 -
OpenCV3+VS2015开发环境搭建
准备配置的环境电脑系统:Windows 10 专业版 OpenCV版本:3.1.0Visual Studio版本:2015在配置OpenCV3之前,需要先把VS2015安装好。本文默认已经安装了VS2015。如果没有安装VS2015,请参考博客中的关于VS2015的下载和安装的内容:http://blog.csdn.net/quxiaoxia1986/article/details/5235211...原创 2018-06-10 15:33:23 · 2101 阅读 · 0 评论 -
opencvC++学习1加载、修改、保存图像
加载图像(用cv::imread)imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称第二个参数,表示加载的图像是什么类型,支持常见的三个参数值IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来IMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来注意:...原创 2018-06-10 15:53:54 · 2101 阅读 · 0 评论 -
OpenCV3颜色空间转换——cv::cvtColor()详解
cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。void cv::cvtColor( cv::InputArray src, // 输入序列 cv::OutputArray dst, // 输出序列 int code,...转载 2018-06-10 16:00:07 · 1167 阅读 · 0 评论 -
opencv绘制基本图形及文字
OpenCV中可以绘制的图形有直线、矩形、多边形、圆、椭圆。以及一个写文本的函数puttext1. 基本函数LineC++: void line(Mat& img, Point pt1,Point pt2, const Scalar& color, int thickness=1, int lineType=8,int shift=0)Parameters:img – 图像.pt...转载 2018-06-10 21:27:45 · 388 阅读 · 0 评论 -
图像处理算法——卷积
一、 什么是卷积? 在图像处理中,卷积操作指的是使用一个卷积核对图像中的每个像素进行一系列操作。 卷积核(算子)是用来做图像处理时的矩阵,图像处理时也称为掩膜,是与原图像做运算的参数。卷积核通常是一个四方形的网格结构(例如3*3的矩阵或像素区域),该区域上每个方格都有一个权重值。 使用卷积进行计算时,需要将卷积核的中心放置在要计算的像素上,一次计算核中每个元素和其...转载 2018-06-10 21:49:47 · 7399 阅读 · 0 评论 -
opencvC++学习14基本阈值操作
阈值类型一 阈值二值化(threshold binary)大于阈值为255,小于阈值为0。阈值类型二 阈值反二值化(threshold binary Inverted)大于阈值为0,小于阈值为255。阈值类型三 截断 (truncate)大于阈值为该阈值,小于阈值不变。阈值类型四 阈值取零 (threshold to zero)小于阈值为0, 大于阈值不变。阈值类型五 阈值反取零 (thresho...原创 2018-06-19 11:12:01 · 536 阅读 · 0 评论 -
边缘检测 从Roberts到Canny算子
一、边缘的重要性 边缘在图像处理中的重要性不言而喻。当前AI最高端技术莫过于深度学习,而图像方面的深度学习建模所需要的特征,很多是从边缘为起点,不断向上构成更高层次的特征描述。我们来看下例子,此例摘自zouxy09关于深度学习的一篇文章( Deep Learning(深度学习)学习笔记整理系列): 1995 年前后,Bruno Olshausen和 David F...转载 2018-06-19 14:04:25 · 471 阅读 · 0 评论 -
Roberts边缘检测算子
clear all;sourcePic=imread('9.jpg'); %读取原图像grayPic=rgb2gray(sourcePic); %转换成灰度图像subplot(131);imshow(grayPic);title('原图');[high,width]=size(grayPic);newGrayPic=grayPic;%为保留图像的边缘一个像素robertsNum=0; %经robe...转载 2018-06-19 14:18:59 · 1562 阅读 · 0 评论 -
opencvC++学习15线性滤波:
卷积概念卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)卷积如何工作把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。数学表达如下:常见算子Robert算子Sobel算子拉普拉斯算子代码:#include <opencv2\o...原创 2018-06-19 14:52:59 · 262 阅读 · 0 评论 -
opencvC++学习2矩阵的掩膜操作
opencvC++学习2矩阵的掩膜操作获取图像像素指针Mat.ptr(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。 获得当前行指针const uchar* current= myImage.ptr(row );获取当前像素点P(row, col)的像素值 p(row, col) =current[col]像素范围处理saturate_cast...原创 2018-06-30 18:52:39 · 451 阅读 · 0 评论 -
opencvC++学习16处理边缘
卷积边界问题图像卷积的时候边界像素,不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。处理边缘...原创 2018-06-20 16:08:41 · 409 阅读 · 0 评论 -
opencvC++学习3Mat对象
opencvC++学习3Mat对象Mat对象OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题Mat对象使用部分复制:一般情况下只会复制Mat对象...原创 2018-07-14 14:09:59 · 442 阅读 · 0 评论 -
opencvC++学习9模糊2
模糊方法:1.中值滤波统计排序滤波器中值对椒盐噪声有很好的抑制作用2.双边滤波1.均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重2.高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同3.高斯双边模糊 – 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变APT:1.中值模糊medianBlur(Mat src, Mat dest, ksize) ...原创 2018-06-09 11:56:43 · 161 阅读 · 0 评论 -
opencvC++学习8模糊1
模糊原理:1.Smooth/Blur 是图像处理中最简单和常用的操作之一2.使用该操作的原因之一就为了给图像预处理时候减低噪声3.使用Smooth/Blur操作其背后是数学的卷积计算4.通常这些卷积算子计算都是线性操作,所以又叫线性滤波模糊方法:1.归一化盒子滤波(均值滤波)2.高斯滤波API:均值模糊 blur(Mat src, Mat dst, Size(xradius, yradius), ...原创 2018-06-09 10:15:19 · 227 阅读 · 0 评论 -
opencvC++学习24直方图计算
代码:#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;Mat src, dst, map_x, map_y;const char* OUTPUT_TITLE = "remap demo";int main(){ src = ...原创 2018-06-23 22:23:16 · 188 阅读 · 0 评论 -
opencvC++学习17 Sobel算子
卷积应用-图像边缘提取1.边缘是什么 – 是像素值发生跃迁的地方,是图像的显著特征之一, 在图像特征提取、对象检测、模式识别等方面都有重要的作用。2.如何捕捉/提取边缘 – 对图像求它的一阶导数delta = f(x) – f(x-1), delta越大,说明像素在X方向变化越大,边缘信号越强,3.我已经忘记啦,不要担心,用Sobel算子就好!卷积操作Sobel算子是离散微分算子(discret...原创 2018-06-20 21:06:12 · 1624 阅读 · 1 评论 -
opencvC++学习18Laplance算子
理论:解释:在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。代码:#include <opencv2\opencv.hpp>using namespace cv;using namespace std;int main(){ Mat src, dst; src = imread("D:/opencvSR...原创 2018-06-20 21:20:12 · 212 阅读 · 0 评论 -
opencvC++学习19Canny边缘检测
Canny算法介绍Canny是边缘检测算法,在1986年提出的。是一个很好的边缘检测器很常用也很实用的图像处理方法。Canny算法介绍 – 五步 in cv::Canny1.高斯模糊 - GaussianBlur2.灰度转换 - cvtColor3.计算梯度 – Sobel/Scharr4.非最大信号抑制5.高低阈值输出二值图像 代码:#include <opencv2\opencv.hpp...原创 2018-06-21 11:54:26 · 286 阅读 · 0 评论 -
opencvC++学习20霍夫变换-直线
霍夫直线变换介绍Hough Line Transform用来做直线检测前提条件 – 边缘检测已经完成平面空间到极坐标空间转换对于任意一条直线上的所有点来说变换到极坐标中,从[0~360]空间,可以得到r的大小属于同一条直线上点在极坐标空(r, theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标。从而得到直线从平面坐标变换到霍夫空间(极坐标)API:标准...原创 2018-06-22 11:37:07 · 644 阅读 · 0 评论 -
opencvC++学习10膨胀与腐蚀
图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段形态学操作-膨胀:跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状形态学操作-腐蚀腐蚀跟膨胀操作的过程类似,...原创 2018-06-14 12:06:05 · 268 阅读 · 0 评论 -
opencvC++学习21霍夫圆变换
霍夫圆检测原理从平面坐标到极坐标转换三个参数假设平面坐标的任意一个圆上的点,转换到极坐标中:处有最大值,霍夫变换正是利用这个原理实现圆的检测。API: cv::HoughCircles因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波。基于效率考虑,Opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为两步: 1. 检测边缘,发现可能的圆心 2. 基于第一步的基础上从候选圆心开始计算最...原创 2018-06-22 12:08:33 · 1120 阅读 · 0 评论 -
opencvC++学习3Mat对象
关于Mat类的创建于复制#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat src; src = imread("D:/opencv/test.jpg"); if (src.empty()) { p...原创 2018-06-07 18:45:31 · 339 阅读 · 0 评论 -
opencvC++学习4像素操作
实现像素取反的效果#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat src; src = imread("D:/opencv/test.jpg"); if (src.empty()) { prin...原创 2018-06-08 12:58:08 · 469 阅读 · 0 评论 -
Qt+opencv+Window10环境搭建
1、下载工具:下载安装Qt最新版本:http://download.qt.io/official_releases/qt/下载安装Cmake最新版本:https://cmake.org/download/下载安装opencv3.1: https://sourceforge.net/projects/opencvlibrary/files/2、双击打开cmake-gui,指定opencv的sourc...转载 2018-06-23 08:17:31 · 465 阅读 · 0 评论 -
opencvC++学习22像素重映射(cv::remap)
什么是像素重映射简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。API:Remap(InputArray src,// 输入图像OutputArray dst,// 输出图像InputArray map1,// x 映射表 CV_32FC1/CV_32FC2InputArray map2,// y 映射表int interpolation,// ...原创 2018-06-23 09:57:04 · 636 阅读 · 0 评论 -
opencvC++学习6调整图像亮度与对比度
图像变换可以看作如下: - 像素变换 – 点操作 - 邻域操作 – 区域调整图像亮度和对比度属于像素变换-点操作公式:α:表示对比度;β:表示亮度;#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat src;...原创 2018-06-08 14:38:10 · 694 阅读 · 0 评论 -
opencvC++学习11形态学操作
形态学操作开操作- open先腐蚀后膨胀可以去掉小的对象,假设对象是前景色,背景是黑色闭操作- close先膨胀后腐蚀(bin2)可以填充小的洞(fill hole),假设对象是前景色,背景是黑色形态学梯度- Morphological Gradient膨胀减去腐蚀 又称为基本梯度(其它还包括-内部梯度、方向梯度)顶帽 – top hat顶帽 是原图像与开操作之间的差值图像黑帽 – black h...原创 2018-06-15 15:27:28 · 584 阅读 · 0 评论 -
opencvC++学习23直方图均衡化
什么是直方图(Histogram)图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。是图像的统计学特征。图像直方图直方图均衡化是一种提高图像对比度的方法,拉伸图像灰度值范围。代码:#include <iostream>#include <opencv2/opencv.hpp&...原创 2018-06-23 10:28:02 · 503 阅读 · 0 评论 -
opencvC++学习12形态学操作应用-提取水平与垂直线
形态学操作应用-提取水平与垂直线原理方法图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。 - 膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值 - 腐蚀,输出的像素值是结构元素覆盖下输入图像...原创 2018-06-15 17:38:51 · 228 阅读 · 0 评论 -
opencvC++学习13图像上采样和降采样
图像金字塔概念1.我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔2. 一个图像金字塔式一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。图像金字塔概念 – 高斯金字塔高斯金子塔是从底向上,逐层降采样得到。降采样之后图像大小是原图...原创 2018-06-15 18:29:13 · 752 阅读 · 0 评论 -
opencvC++学习4像素操作
opencvC++学习4像素操作读读一个GRAY像素点的像素值(CV_8UC1)Scalar intensity = img.at(y, x); 或者 Scalar intensity = img.at(Point(x, y));读一个RGB像素点的像素值 Vec3f intensity = img.at(y, x); float blue = intensity.v...原创 2018-07-14 14:10:58 · 475 阅读 · 0 评论