
计算机视觉
文章平均质量分 75
关于OpenCV的基础学习资料和Realsense实感摄像头的开发.
DDsoup
大四在读,专业:计算机科学与技术
展开
-
K-近邻算法
KNN原创 2022-07-29 20:37:43 · 804 阅读 · 0 评论 -
opencv 双边滤波
双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保留边缘去除噪声的目的。双边滤波器之所以能够做到在平滑去噪的同时还能够很好的保存边缘(Edge Preserve),是由于其滤波器的核由两个函数生成:一个函数由像素欧式距离决定滤波器模板的系数 (欧式距离是在n维空间中两点真实的直线距离) 另一个函数由像素的灰度差值决定滤波器的系数APIvoid bilateralFilter(Inp原创 2022-05-31 19:48:39 · 1594 阅读 · 0 评论 -
像素重映射
像素重映射的概念例如: 图片的左右上下翻转,手机横屏竖屏转换.APIcv::remap ( InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation, int borderMode = BORDER_CONSTANT, const Scalar borderValue = Scalar() )第一个参数,InputArray类..原创 2022-04-05 15:06:50 · 246 阅读 · 0 评论 -
聚类算法——KMeans(K-均值)
聚类的概念聚类是一种机器学习技术,它涉及到数据点的分组。给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征。聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术。聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来。这也是聚类存在的意义。聚类的过程1. 数...原创 2022-04-04 19:53:07 · 9786 阅读 · 1 评论 -
基于OpenCV的Haar与LBP级联分类器
级联分类器原理-AdaBoost·Viola和Jones – 2001在CVPR提出 ·一种实时对象(人脸)检测框架 ·训练速度非常慢,检测速度非常快·5000个正向人脸样本与300万个非人脸负样本数据弱分类器-Weak classifier = Feature 强分类器-多个弱分类器的线性组合 级联分类器-多个强分类器的组合Boosting算法是一种通过多次学习来提升算法精度的方法,它采用的是综合的...原创 2022-04-03 13:02:24 · 4489 阅读 · 0 评论 -
OpenCV——Haar特征
Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述特定走向(水平、垂直、对角)的结构对于图中的A, B和D这类特征,特征数...原创 2022-03-27 18:49:48 · 1256 阅读 · 0 评论 -
OpenCV——积分图
前言:高等数学和线性代数还是得好好学的.积分图(integral image)积分图像是一种在图像中快速计算矩形区域和的方法,这种算法的主要优点是一旦积分图像首先被计算出来,我们就可以在常量时间内计算图像中任意大小矩形区域的和。这样在图像模糊、边缘提取、对象检测的时候极大降低计算量、提高计算速度。积分图中任意一点(x,y)的值等于灰度图的左上角与当前点所围成的矩形区域内所有像素点灰度值之和。(下左图蓝色虚线框部分)下图是一个例子:积分...原创 2022-03-26 18:25:47 · 1860 阅读 · 0 评论 -
OpenCV——LBP特征
LBP ( Local binary pattern) ,局部二进制模式.LBP特征的描述原始的LBP算子定义为在3 ∗ 3 的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于等于中心像素值,则该点的位置被标记为1,否则为0。这样3 ∗ 3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该窗口中心像素点的LBP值,并用这个值来反映该区域的纹理信息。需要注意的是,LBP值是按照顺时针方向组成的二进制数。原创 2022-03-25 23:37:42 · 4456 阅读 · 0 评论 -
OpenCV——HOG特征检测
基本概念方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功 主要思想:在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于...原创 2022-03-24 17:52:34 · 2196 阅读 · 0 评论 -
卷积神经网络简单认知
卷积(11条消息) 卷积的浅显理解_DDsoup的博客-优快云博客https://blog.youkuaiyun.com/m0_61897853/article/details/123485702?spm=1001.2014.3001.5501(11条消息) 多种类型的卷积_DDsoup的博客-优快云博客https://blog.youkuaiyun.com/m0_61897853/article/details/123597030?spm=1001.2014.3001.5501神经网络 神经网...原创 2022-03-22 17:36:03 · 639 阅读 · 0 评论 -
多种类型的卷积
2D卷积从最原始的图像卷积操作开始。因为图像有单通道图像(灰度图)和多通道图(RGB图),所以对应常规卷积方式可以分为单通道卷积和多通道卷积。二者本质上并无太大差异,无非对每个通道都要进行卷积而已。先来看单通道卷积。 在单通道卷积中,针对图像的像素矩阵,卷积操作就是用一个卷积核来逐行逐列的扫描像素矩阵,并与像素矩阵做元素相乘,以此得到新的像素矩阵。其中卷积核也叫过滤器或者滤波器,滤波器在输入像素矩阵上扫过的面积称之为感受野。假设输入图像维度为 n ∗ n ∗ c,滤波器维度...原创 2022-03-19 17:25:24 · 4241 阅读 · 0 评论 -
卷积的浅显理解
卷积的定义由上述式子可以知道,卷积是一种加权叠加,是一种积分运算.这个特征有什么意义?我们令 x= r,y = n - r 那么x + y = n 就是下面这些直线:如果积分求和这些直线,就好比,把毛巾沿着角卷起来: 图像卷积卷积的时候需要对卷积核进行180的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值,计算...原创 2022-03-14 20:02:35 · 4423 阅读 · 0 评论 -
OpenCV——Grabcut算法
Grabcut 算法主要运用于计算机视觉中的前背景分割,立体视觉和抠图等。该算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只要少量的用户交互操作即可得到比较好的分割结果.1. Grabcut 的目标和背景的模型是RGB三通道的混合高斯模型GMM;2.Grab Cut为一个不断进行分割估计和模型参数学习的交互迭代过程;3.Grab Cut只需要提供背景区域的像素集就可以了。也就是说你只需要框选目标,那么在方框外的像素全部当成背景,这时候就可以对GMM进行建模和完成良好...原创 2022-03-13 14:27:39 · 8513 阅读 · 11 评论 -
OpenCV——SIFT特征检测
算法描述SIFT特征不只具有尺度不变性,即使改变旋转角度,图像亮度或拍摄视角,仍然能够得到好的检测效果。整个算法分为以下几个部分:建立尺度空间,寻找极值构建图像高斯金字塔,求取DOG,发现最大与最小值在每一级构建的高斯金字塔,每一层根据sigma的值不同,可以分为几个待级,最少有4个。关键点定位我们在像素级别获得了极值点的位置,但是更准确的值应该在亚像素位置,如何得到--这个过程称为关键点(准确/精确)定位。...原创 2022-03-12 20:40:24 · 5779 阅读 · 0 评论 -
基于距离变换与分水岭的图像分割
图像分割的定义根据灰度、颜色、纹理和形状等特征,把图像分成若干个特定的、具有独特性质的区域,这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性,并提出感兴趣目标的技术和过程。 它是由图像处理到图像分析的关键步骤。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像索赋予相同的编号。目的是将图像中像素根据一定的规则分为若干(N)个聚(cluster)集合,每个集合包含一类像素。将对象在背景提取出来...原创 2022-03-10 17:31:50 · 543 阅读 · 0 评论 -
OpenCV——角点检测 (Corner Detection)
角点 角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界。角点检测(CornerDetection)是计算机视觉系统中获取图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维重建和目标识别等,也可称为特征点检测。角点检测算法的基本思想 使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在...原创 2022-03-04 22:08:51 · 9184 阅读 · 1 评论 -
关于 Intel Realsense 深度图像处理.1(C++)
Realsense SDK2.0 + C++rs-hello-realsensers-hello-realsense示例演示了连接到英特尔实感设备以及通过打印到摄像头视野中心物体的距离来利用深度数据的基础知识。假设相机已连接,您应该看到线路不断更新。X是相机视野中心物体的距离(以米为单位)。除高级功能外,所有功能都通过单个标头提供:#include <librealsense2/rs.hpp> // Include Intel RealSense Cros.原创 2022-02-22 20:27:14 · 13522 阅读 · 0 评论 -
OpenCV——视频基础操作
opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头,下面是该类的API。1.VideoCapture类的构造函数:VideoCapture::VideoCapture();VideoCapture::VideoCapture(const string& filename);VideoCapture::VideoCapture(int device);功能:创建一个VideoCapture类的实例,如果传入对应的参数,可以直接打开视频文件或者要调用的摄.原创 2022-02-16 16:42:41 · 676 阅读 · 0 评论 -
OpenCV——对象提取
对象提取,简而言之就是获取指定图像,去除其他图像.解决思路 二值处理 + 形态学处理(开运算+闭运算,轮廓发现) + 横纵比过滤计算.代码实现#include<opencv2/opencv.hpp>#include<iostream>#include<math.h>using namespace cv;using namespace std;Mat src, binary, close_dst,open_ds...原创 2022-02-11 20:45:34 · 2158 阅读 · 0 评论 -
在Visual Studio 2019 配置Realsense开发环境 ( Win 10 )
打开属性打开包含目录按如图所示路径添加,如果存储路径与我不同,则添加 include 文件的路径.打开源目录按如图所示路径添加,如果存储路径与我不同,则添加 lib 文件中 x64的路径.添加附加依赖项添加下面这四个realsense2.libglfw-imgui.libglmf32.libglu32.lib在附加包含目录添加example.hpp所在路径...原创 2022-02-04 21:55:25 · 1335 阅读 · 0 评论 -
轮廓周围绘制矩形框和圆形框
在图片轮廓之外,绘制标准矩形或圆形进行标注API 介绍多边拟合函数APIvoid approxPolyDP(InputArray curve, // 一般是由图像的轮廓点组成的点集 OutputArray approxCurve, // 表示输出的多边形点集 double epsilon, // 主要表示输出的精度;这是原始曲线与其近似之间的最大 ...原创 2022-01-30 17:38:20 · 373 阅读 · 0 评论 -
OpenCV——凸包
凸包概念Graham扫描算法API 介绍凸包实现步骤可以用滤波适当地消除噪声,减少干扰代码实现#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>#include <opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;Mat..原创 2022-01-29 15:17:53 · 400 阅读 · 0 评论 -
OpenCV——轮廓
前言当我们通过阈值分割提取到图像中的目标物体后,我们就需要通过边缘检测来提取目标物体的轮廓,使用这两种方法基本能够确定物体的边缘或者前景。接下来,我们通常需要做的是拟合这些边缘的前景,如拟合出包含前景或者边缘像素点的最小外包矩形、圆、凸包等几何形状,为计算它们的面积或者模板匹配等操作打下坚实的基础。注意:边缘和轮廓并不完全相同.轮廓发现 ( find contour)首先了解一下轮廓的定义。一个轮廓代表一系列的点(像素),这一系列的点构成一个有序的点集,所以可...原创 2022-01-28 16:48:37 · 5414 阅读 · 2 评论 -
OpenCV——模板匹配
模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像)另外需要一个待检测的图像——源图像S工作方法,在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。在 OpenCV 中,提供了相应的函数完成这个操作。matchTemplate 函数:在模板和输入图像之间寻找匹配,获得匹配结果图像void matchTemplate( InputArray image, InputArr原创 2022-01-28 15:46:30 · 1688 阅读 · 0 评论 -
OpenCV ——直方图及其操作
直方图在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表,他的两个坐标分别是统计样本(图像、视频帧)和样本的某种属性(亮度,像素值,梯度,方向,色彩等等任何特征)。 也可以这么理解,直方图是对数据的统计,并把统计值显示到事先设定好的bin(矩形条)中,bin中的数值是从数据中计算出的特征的统计量。总之,直方图获取的是数据分布的统计图,通常直方图的维数要低于原始数据。 图像直方图是用一表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值...原创 2022-01-27 16:33:01 · 1404 阅读 · 0 评论 -
OpenCV二值图像处理——阈值,连通区域分析(C++)
阈值阈值又叫临界值,是指一个效应能够产生的最低值或最高值对于图像的直方图存在明显边界的图像,我们可以很容易找到这个阈值,但是如果图像直方图分界不明显,那么这个阈值的寻找将变得十分困难。因此我们存在全局阈值与局部阈值两种全局阈值全局阈值就是在整幅图像中我们只有一个阈值来对图像进行二值化,但是其存在其局限性,例如图像中存在高斯噪声的情况下,我们无法找到一个很好的阈值将图像的边界分开:另外如果图像的边界是在局部对比下出现的,即不同位置阈值不同,那么全局阈值的...原创 2022-01-26 20:40:35 · 3852 阅读 · 0 评论 -
OpenCV——图像金字塔和边缘检测
阈值阈值又叫临界值,是指一个效应能够产生的最低值或最高值对于图像的直方图存在明显边界的图像,我们可以很容易找到这个阈值,但是如果图像直方图分界不明显,那么这个阈值的寻找将变得十分困难。因此我们存在全局阈值与局部阈值两种全局阈值全局阈值就是在整幅图像中我们只有一个阈值来对图像进行二值化,但是其存在其局限性,例如图像中存在高斯噪声的情况下,我们无法找到一个很好的阈值将图像的边界分开:另外如果图像的边界是在局部对比下出现的,即不同位置阈值不同,那么全局阈值的效...原创 2022-01-26 16:18:26 · 671 阅读 · 0 评论 -
OpenCV——形态学操作的应用
提取水平与垂直线原理方法 图像形态学操作的时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出,通过使用两个基本的形态学操作——膨胀(dilate)和腐蚀(erode),使用不同的结构元素实现对输入图像的操作,得到想要的结果。(理解对比开操作和闭操作)膨胀——输出的像素值是结果元素覆盖下输入图像的最大像素值腐蚀——输出的像素值是结构元素覆盖下输入图像的最小像素值提取步骤输入图像彩色图像imr...原创 2022-01-25 15:17:11 · 220 阅读 · 0 评论 -
OpenCV 二值图像处理——形态学的基本操作(C++)
图像的基本操作(3)形态学的四个基本操作膨胀腐蚀开运算闭运算原创 2022-01-23 14:13:37 · 5057 阅读 · 0 评论 -
OpenCV基础2.0(C++)
图像基本操作(2)读取像素// 读取一个GRAY像素点的像素值( CV_8UC1)Scalar intensity = img.at<ychar>(y,x);// 读取一个RGB像素点的像素值Vec3f intensity = img.at<Vec3f>(y,x);float blue = intensity.val[0];float green = intensity.val[1];float red = intensity.val[2];// 空白原创 2022-01-22 17:27:34 · 675 阅读 · 0 评论 -
OpenCV基础1.0(C++)
图像的基本操作加载图像导入我们需要的库:import cv2;import matplotlib.pyplot as plt;import numpy as np ;%matplotlib inline ;图像的读入:img = cv2.imread('tahiti.jpg');图像的显示:cv2.imshow('image',img) ;cv2.waitKey(0) ;cv2.destroyAllWindows();cv2.IMREAD_UNCH..原创 2022-01-21 22:29:22 · 698 阅读 · 0 评论 -
OpenCV安装及其开发环境配置(C++)
目录第一章 Opencv安装及其环境变量配置 1.1下载并安装OpenCV 1.2 OpenCV环境变量配置 第二章 Visual Studio 2019 编译器下载安装 第三章 OpenCV开发环境配置(C++) 3.1创建项目 3.2 添加包含目录 3.3 添加库目录 3.4 添加附加依赖项 3.5 后续问题的检验和处理 第一章 Opencv安装及其环境变量配置1.1下载并安装OpenCV首先到官网:Home - OpenCV然后点原创 2022-01-20 20:34:05 · 63156 阅读 · 82 评论 -
在 Linux Ubuntu / Windows 10配置 RealSense 开发环境 开发预处理以及了解树莓派3
首先,打开Intel Realsense 官网.(Intel® RealSense™ Computer Vision - Depth and Tracking cameras (intelrealsense.com))将鼠标移动至 PRODUCTS , 然后点击Depth Camera D435i .进入下一个界面,移动到图示的部分,点击OpenCV或者C/C++,进入下一个界面内.点击左上角的SDK 2.0点击 那只企鹅.(Between Window...原创 2021-12-16 21:50:24 · 4223 阅读 · 0 评论