- 博客(200)
- 收藏
- 关注
转载 boost::asio::io_service::定时器任务队列
使用io_service和定时器写的一个同步和异步方式的任务队列#pragma once#include <string>#include <iostream>#include <functional>#include <boost/asio.hpp>#include <boost...
2019-09-20 16:52:00
711
转载 opencv::基于距离变换与分水岭的图像分割
什么是图像分割 图像分割(Image Segmentation)是图像处理最重要的处理手段之一 图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。 根据算法分为监督学习方法和无监督学习方法,图像分割的算法多数都是无监督学习方法 - KMeans距离变换常见算法有两种 - 不断膨...
2019-09-11 10:54:00
296
转载 opencv::点多边形测试
点多边形测试 测试一个点是否在给定的多边形内部,边缘或者外部double pointPolygonTest( InputArray contour, // 输入的轮廓 Point2f pt, // 测试点 bool measureDist // 是否返回距离值,如果是f...
2019-09-11 10:44:00
352
转载 opencv::图像矩(Image Moments)
矩的概念介绍 1、几何矩 2、中心距 3、中心归一化距 4、图像中心Center(x0, y0) 计算矩moments( InputArray array, // 输入数据 bool binaryImage=false // 是否为...
2019-09-10 17:16:00
324
转载 opencv::轮廓周围绘制矩形框和圆形框
基于RDP算法实现,目的是减少多边形轮廓点数approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)cv::boundingRect(InputArray points)//得到轮廓周围最小矩形左上交点坐标和右下角点坐标,绘制一个矩形...
2019-09-10 16:37:00
504
转载 opencv::凸包-Convex Hull
概念介绍 什么是凸包(Convex Hull),在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部。 正式定义:包含点集合S中所有点的最小凸多边形称为凸包Graham扫描算法 首先选择Y方向最低的点作为起始点p0 从p0开始极坐标扫描,依次添加p1….pn(排序顺序是根据极坐标的角度大小,逆时针方向)...
2019-09-10 16:10:00
255
转载 opencv::轮廓发现(find contour in your image)
轮廓发现(find contour)轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓发现结果//发现轮廓cv::findContours( InputOutputArray binImg, // 输入图像,非0的像素被看成1,0的像素值保持不变,8-bit Outp...
2019-09-10 15:48:00
216
转载 opencv::模板匹配(Template Match)
模板匹配介绍 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。 所以模板匹配首先需要一个模板图像T(给定的子图像) 另外需要一个待检测的图像-源图像S 工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。OpenCV中提供了六种常见...
2019-09-10 15:06:00
617
转载 opencv::直方图反向投影
直方图反向投影(Back Projection)反向投影是反映直方图模型在目标图像中的分布情况。简单点说就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道直方图模型。反向投影 – 步骤1.建立直方图模型2.计算待测图像直方图并映射到模型中3.从模型反向计算生成图像实现步骤与相关API加...
2019-09-10 14:10:00
123
转载 opencv::直方图比较
直方图比较方法-概述 对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。 Correlation 相关性比较 Chi-Square 卡方比较 Intersection 十字交叉性 Bhattacharyya dis...
2019-09-10 10:42:00
444
转载 opencv::直方图计算
直方图概念 上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。 这个才是直方图的概念真正意义,不过是基于图像像素灰度直方图是最常见的.直方图最常见的几个属性:- dims 表示维度,对灰度图像来说只有一个通道值dims=1- bins 表示在维度中子区域大小划分,bins=25...
2019-09-09 17:17:00
161
转载 opencv::直方图均衡化
直方图均衡化图像直方图: 是指对整个图像像在灰度范围内的像素值是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。 直方图反映了图像灰度的分布情况。是图像的统计学特征。直方图均衡化 通过上一课中的remap我们知道可以将图像灰度分布从一个分布映射到另外一个分布, 然后在...
2019-09-09 16:55:00
143
转载 opencv::像素重映射
像素重映射(cv::remap) 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。Remap( InputArray src, // 输入图像 OutputArray dst, // 输出图像 InputArray map1, /...
2019-09-09 16:40:00
157
转载 opencv::霍夫圆变换
霍夫圆检测原理从平面坐标到极坐标转换三个参数假设平面坐标的任意一个圆上的点,转换到极坐标中: 处有最大值,霍夫变换正是利用这个原理实现圆的检测。cv::HoughCircles因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波。基于效率考虑,Opencv中实现的霍夫变换圆检...
2019-09-09 15:34:00
181
转载 opencv::霍夫变换-直线
霍夫直线变换介绍 Hough Line Transform用来做直线检测 前提条件 – 边缘检测已经完成 平面空间到极坐标空间转换对于任意一条直线上的所有点来说,变换到极坐标中,从[0~360]空间,可以得到r的大小 属于同一条直线上点在极坐标空(r, theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标。从...
2019-09-05 17:11:00
292
转载 opencv::Canny边缘检测
Canny算法介绍 五步 in cv::Canny 高斯模糊 - GaussianBlur 灰度转换 - cvtColor 计算梯度 – Sobel/Scharr 非最大信号抑制 高低阈值输出二值图像 Canny算法介绍-高低阈值输出二值图像 T1, T2为阈值, 凡是高于T2的都保留, ...
2019-09-05 16:55:00
146
转载 opencv::Laplance算子
Laplance算子 理论:在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。拉普拉斯算子(Laplance operator)处理流程 高斯模糊 – 去噪声GaussianBlur() 转换为灰度图像cvtColor() 拉普...
2019-09-05 16:41:00
183
转载 opencv::Sobel算子
卷积应用-图像边缘提取卷积应用-图像边缘提取 边缘是什么 – 是像素值发生跃迁的地方,是图像的显著特征之一, 在图像特征提取、对象检测、模式识别等方面都有重要的作用。 如何捕捉/提取边缘 – 对图像求它的一阶导数 - delta = f(x) – f(x-1), delta越大,说明像素在X方向变化越大,边缘...
2019-09-05 15:58:00
185
转载 opencv::处理边缘
卷积边界问题 图像卷积的时候边界像素,不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。处理边缘 在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充1个像素的边缘, 这样就确保图像的边缘被处理,在卷...
2019-09-05 15:40:00
121
转载 opencv::自定义线性滤波
卷积概念常见算子自定义卷积模糊卷积概念 1、卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。 2、Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)。 3、把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理...
2019-09-05 15:17:00
94
转载 opencv::基本阈值操作
图像阈值(threshold) 阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型。(Binary segmentation) 阈值类型一阈值二值化(threshold binary)阈值类型一阈值反二值化(threshold binary Inverted) 阈值类型一...
2019-09-05 14:53:00
188
转载 opencv::图像上采样和降采样
图像金字塔概念 1. 我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔 2. 一个图像金字塔式一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。图像金字塔概念 1、高斯...
2019-09-05 13:43:00
471
转载 opencv::形态学操作应用-提取水平与垂直线
原理方法 -图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。 -通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。 - 膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值 - 腐...
2019-09-05 11:45:00
206
转载 opencv::形态学操作
形态学操作 开操作- open 闭操作- close 形态学梯度- Morphological Gradient 顶帽 – top hat 黑帽 – black hat开操作- open 先腐蚀后膨胀 可以去掉小的对象,假设对象是前景色,背景是黑色闭操作-close 先膨胀后腐蚀...
2019-09-05 11:12:00
116
转载 opencv::膨胀与腐蚀
形态学操作(morphology operators)-膨胀图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段膨胀跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用...
2019-09-03 17:00:00
190
转载 opencv::模糊图像2
中值滤波统计排序滤波器中值对椒盐噪声有很好的抑制作用medianBlur(Mat src, Mat dest, ksize)双边滤波均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同高斯双边模糊 – 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不...
2019-09-03 16:47:00
96
转载 opencv::模糊图像
Smooth/Blur 是图像处理中最简单和常用的操作之一,使用该操作的原因之一就为了给图像预处理时候减低噪声使用Smooth/Blur操作其背后是数学的卷积计算,通常这些卷积算子计算都是线性操作,所以又叫线性滤波假设有6x6的图像像素点矩阵。卷积过程:6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像个像素点值之和取平均值赋给中心红色像素作...
2019-09-03 16:21:00
68
转载 opencv::绘制-基本几何
画线 cv::line(LINE_4\LINE_8\LINE_AA)画椭圆 cv::ellipse画矩形 cv::rectangle画圆 cv::circle画填充 cv::fillPoly putText(bgImage, "Hello OpenCV 你好 ", Point(300, 300), CV_FONT_HERSHEY_...
2019-09-03 16:10:00
131
转载 opencv::调整图像亮度与对比度
图像变换可以看作如下: - 像素变换 – 点操作 - 邻域操作 – 区域调整图像亮度和对比度属于像素变换-点操作//创建一张跟原图像大小和类型一致的空白图像、像素值初始化为0Mat new_image = Mat::zeros( image.size(), image.type() ); //确保值大小范围为0~255之间...
2019-09-03 15:12:00
140
转载 opencv::两张图片的线性融合
理论-线性混合操作g(x) 表示 融合图片中的像素点,f0(x) 和 f1(x) 分别表示背景和前景图片中的像素点。//参数1:输入图像Mat – src1//参数2:输入图像src1的alpha值//参数3:输入图像Mat – src2//参数4:输入图像src2的alpha值//参数5:gamma值//参数6:输出混合...
2019-09-03 14:53:00
355
转载 opencv::Mat属性
Mat对象OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分。IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题。//默认构造函数 Mat A;Mat ()/...
2019-09-03 13:27:00
255
转载 opencv::卷积运算函数filter2D()
使用掩模板矩阵(kernel)计算每个像素值与原图相比,没有黑边int main(int argc, char** argv) { Mat srcImage = imread(STRPAHT2); //判断图像是否加载成功 if (srcImage.data) cout << "...
2019-09-03 11:43:00
411
转载 opencv::读取图片
OpenCV支持JPG、PNG、TIFF等常见格式图像文件加载加载图像 Mat imread( const String& filename, int flags = IMREAD_COLOR ); 加载图像文件成为一个Mat对象 IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变 IMREAD_GRAYSCA...
2019-09-02 16:01:00
173
转载 日志::spdlog
https://github.com/gabime/spdloggit clone https://github.com/gabime/spdlog.gitcd spdlog && mkdir build && cd buildcmake .. && make -jmake install Installin...
2019-08-23 11:12:00
435
转载 std::is_same
两个一样的类型会返回truebool isInt = std::is_same<int, int>::value; //为truestd::cout << std::is_same<int, int32_t>::value << '\n'; // truestd::cout << st...
2019-08-20 14:21:00
272
转载 json::rapidjson工具
源码地址: https://github.com/Tencent/rapidjson 可跨平台使用。将 rapidjson-master\include\rapidjson 中的 rapidjson 文件夹添加到 项目中 即可。#pragma once#include <type_traits>#include <rapidjson/erro...
2019-08-19 14:38:00
110
转载 nginx::基于Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls流媒体服务器
待续ffmpeg -re -i "/home/bk/hello.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 720*960 -q 10 rtmp://127.0.0.1:1935/hls/mystream转载于:https://www...
2019-08-14 17:28:00
206
转载 nginx::配置https/反向代理
vim /etc/nginx/nginx.confuser nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024;}...
2019-07-09 13:24:00
173
转载 nginx::升级到最新nginx
ubuntu16.04 升级nginx到最新版本wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.keyvim /etc/apt/sources.listdeb http://ag-projects.com/ubuntu xenial mai...
2019-07-09 11:18:00
86
转载 mysql::批量入库
批量入库INSERT INTO M_Signal (Signal_Id, Signal_Name) VALUES(12,'smkoe'),(13,'water')批量更新INSERT INTO M_Signal (Id, Signal_Id, Signal_Name) VALUES(82854, 12, 'smkoe'),(82855, 13, 'wa...
2019-07-05 17:08:00
722
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人