- 博客(42)
- 资源 (7)
- 收藏
- 关注
原创 2021-01-29
Detectron2 介绍一、背景Detectron是构建在Caffe2和Python之上,实现了10多篇计算机视觉最新的成果。Facebook AI研究院又开源了Detectron的升级版,也就是接下来我们要介绍的:Detectron2。Detectron2 是 Facebook AI Research 推出的一个CV库,它实现了最新的目标检测算法,是对先前版本 Detectron 的完全重写,号称目标检测三大开源神器之一(Detectron2/mmDetection/SimpleDet)。
2021-01-29 14:01:55 409
转载 OpenCV3历程(12)——双目视觉测距原理以及推导公式
转载自:https://blog.csdn.net/piaoxuezhong/article/details/79016615一、双目测距原理通过对两幅图像视差的计算,直接对前方景物(图像所拍摄到的范围)进行距离测量。双目摄像头的原理与人眼相似。人眼能够感知物体的远近,是由于两只眼睛对同一个物体呈现的图像存在差异,也称“视差”。物体距离越远,视差越小;反之,视差越大。视差的大小对应着物体与...
2019-06-20 14:31:02 3241 2
转载 C++——字符串分割
转载自:https://blog.csdn.net/liangzhao_jay/article/details/87782017字符串分割代码示例如下,很显然, 使用了C++11 特性,代码简洁好多#include <iostream>#include <string>#include <vector>#include <regex>...
2019-06-04 09:17:28 484
转载 C++——整型数字与字符串相互转换
转载自:https://blog.csdn.net/liangzhao_jay/article/details/87872493C++11提供了to_string 、stoxxx方法, 示例代码如下:#include <iostream>#include <string> using namespace std; //数字转字符串void numbe...
2019-06-04 09:01:01 1061
转载 C++多线程——_beginthread()和_beginthreadex
转载自:https://blog.csdn.net/lyzyung/article/details/38513563https://blog.csdn.net/xuanyin235/article/details/77689512一、背景介绍★两套API :OS API vs CRT API 首先,Windows操作系统本身提供了线程的创建函数CreateThread 和销毁函数...
2019-05-31 17:52:56 3344
转载 Socket通信编程
一、基于TCP的socket通信过程及例子Socket也叫套接字,用来实现网络通讯,通过调用系统提供的API,可以和远程的机子传输数据。Socket有很多种协议,而这篇文章主要讨论TCP部分的内容。Socket的一般调用过程:服务端:socket(), bind(), listen(), accept(), send(), recv(), close()客户端:sock...
2019-05-29 13:53:34 203
转载 C++中string、char、char*、const char、const char*详解及相关函数及相互转换
一、各个之间相互的转换1.string转const char*string s ="abc";const char* c_s = s.c_str();2.const char*转string//直接赋值即可const char* c_s ="abc";string s(c_s);3.string转char*//方法一string s ="abc";char...
2019-05-28 14:18:09 3855
原创 OpenCV3历程(11)——OpenCV4.1.0中opencv_contrib4.1.0和VIZ8.2.0模块的安装
一、安装环境Windows 10 64位、VS2017二、安装准备cmake-3.14.3-win64-x64 下载地址:https://cmake.org/download/ VTK-8.2.0 下载地址:https://vtk.org/download/ opencv_contrib4.1.0 下载地址:https://github.com/opencv/op...
2019-05-11 10:00:49 2359 1
转载 OpenGL历程(1)——VS2017+OpenGL环境的配置
本片博客转载自(感谢博主分享):https://blog.csdn.net/update7/article/details/78034780一、下载OpenGL的所需要的文件http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip然后解压得到五个文件:glut.dll glut32.dll g...
2019-04-29 17:22:22 297 1
转载 OpenCV3历程(10)——轮廓特征应用:计算点与轮廓距离
本片博客转载自(感谢博主分享):https://blog.csdn.net/abcvincent/article/details/79275615opencv实现了Contours与point的距离关系的计算使用起来很方便,不用自己再进行坐标转换计算了;示例代码如下:(对原先博主的代码进行了略微的修改)#include<opencv2/opencv.hpp>#inclu...
2019-04-29 10:36:40 2776 1
转载 OpenCV3历程(9)——图像的矩及矩的匹配
本片博客转载自(感谢博主分享):https://blog.csdn.net/abcvincent/article/details/79312900一、简介图像的矩是归一化的灰度图像的二维随机变量的概率密度,是一个统计学特征。OpenCV中实现了这个剧的算子是Moments();其中分为零阶矩M00、一阶矩M10和M01、二阶矩M20,M02和M11;其中当图像为二值图时,M00是图像面积(...
2019-04-28 16:26:55 2173
原创 OpenCV3历程(8)——三维空间坐标系变换
一、序言在机器视觉中,涉及到三维定位的问题我们很大程度上会遇到从相机坐标系转换到机械臂坐标系,这篇文章讲述一下关于图像三维空间坐标系变换的相关知识。二、相关知识点1、位置的表示:坐标系建立后,任意点p在空间的位置可以用一个3×1的位置矢量来描述;例如,点p在三维坐标系中表示为:其中px,py,pz为P点的坐标分量(位置矢量不同于一般矢量,它的大小与坐标原点的选择有关)。...
2019-04-28 11:09:52 8676
原创 OpenCV3历程(7)——通过按键判断停止调试OpenCV程序时遇到的异常
如图所示,在运行OpenCV相关程序时,如果通过判断按键信息来停止调试时会发生异常:char key = ' ';while (key != 'q') {}return 0;原因:读取位置 0x0000000000000010明显是你有一个指针是NULL没有初始化,你直接在上面+0x10就访问了,具体你要看你第二个截图对应的调用堆栈,找到上一层你的代码,然后仔细检查下每个指...
2019-04-28 08:50:35 363
原创 OpenCV3历程(6)——工业相机和镜头的选型
一、相机的选型1、分辨率 假设检测一个物体的表面划痕,要求拍摄的物体大小为10*8mm,要求的检测精度是0.01mm。首先假设我们要拍摄的视野范围在12*10mm,那么相机的最低分辨应该选择为: (12/0.01)*(10/0.01)=1200*1000,约为120万像素的相机...
2019-04-26 12:42:59 1479
原创 OpenCV3历程(5)——裂缝的检测与测量
一、开始先介绍几个即将用到的函数及知识点1、LUT函数函数简介:void LUT( InputArray src, //原始图像的地址; InputArray lut, //查找表的地址,对于多通道图像的查找,它可以有一个通道,也可以与原始图像有相同的通道; OutputArray dst //输出图像的地址。)函数介...
2019-04-20 10:39:36 11787 6
转载 OpenCV3历程(4)——寻找直线的十字交叉点
此篇文章转载自:https://www.cnblogs.com/jsxyhelu/p/10295373.html首先上图:这里的目标是寻找六条线段的交叉点,我一开始看到这个图片的时候觉得很简单,认为通过霍夫找线段然后求取交叉点就能实现,果不其然,我想太多了,经过对OpenCV里HoughLinesP()函数的参数的各种调节,始终找不到所有的完整的线段,我觉得很大的原因可能是因为图片像素...
2019-04-18 16:09:36 7120
原创 OpenCV3历程(3)——矩形检测
一、首先介绍几个本文用到的函数:1、mixChannels()函数用途:用于将输入数组的指定通道复制到输出数组的指定通道。mixChannels()参数说明:void mixChannels(const Mat* src, //输入数组或向量矩阵,所有矩阵的大小和深度必须相同。size_t nsrcs, //矩阵的数量Mat* dst, //输出数组或矩阵向量,大小和深度必...
2019-04-16 11:03:33 9058 3
原创 OpenCV3历程(2)——二值图像像素统计countNonZero()
图像处理中我们经常会用到统计非零像素点个数,这时我们应该尽量避免循环,可以对二值图像使用countNonZero()函数,更加简单高效!#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>...
2019-04-12 15:15:26 5011
原创 OpenCV3历程(1)——VideoCapture、视频的处理
一、使用cv::VideoCapture对象读取视频流根据数据源的不同,我们需要以不同的调用方式来构建一个cv::VideoCapture对象:cv::VideoCapture::VideoCapture(const string& filename); //input filenamecv::VideoCapture::VideoCapture(int device);...
2019-04-12 11:28:25 9869
原创 学习OpenCV3——第七章:OpenCV中的仿函数
一、操作对象随着OpenCV库的发展,封装复杂功能的新对象越来越普遍地引进,这些功能不是单一的函数能够完成的,但是将它们实现为一组函数又会导致整个库的函数变得太杂乱。因此,尝尝使用一个相关联的新的对象类型来表示一个新功能,这个对象类型可以看做是一个完成这个功能的“机器”,这些机器中的大多数都有一个重载的operator(),使其成为函数对象或者仿函数。如果这种编程习惯不太熟悉,一个重要的思...
2018-11-20 15:21:59 361 2
原创 学习OpenCV3——第六章:绘图和注释
一、绘图我们常常会想要画一幅图片,或者在某个其他地方得来的图片上画些东西。为了实现这个目标,OpenCV提供了一大批可以供我们画直线、矩形、圆等图形的函数。1.艺术线条和填充多边形画直线或者其它图形(虚线,圆,矩形等)的函数通常可以接受宽度(thickness)和线型(lineType)的参数。这两个参数都是整型的,但是第二个参数的值只能是4,8或者cv::LINE_AA。thickn...
2018-11-06 16:49:39 393
原创 学习OpenCV3——第五章:矩阵操作
一、矩阵还可以做很多事情由前面的章节可知,矩阵类的成员函数可以进行很多基本的操作。然而,除此以外,也有很多操作被表示为“友元”函数,它们的输入为矩阵类型,或者输出为矩阵类型,或者输入输出同为矩阵类型。这些函数及其参数将在表5-1介绍。表5-1:基本的矩阵和图像算子 函数名称 描述 cv::abs() 计算矩阵中所有元素的绝对值 cv::absdiff() 计算两...
2018-11-02 11:24:10 997
原创 学习OpenCV3——第四章:图像和大型数组类型
一、动态可变的存储本章,我们将进入大型数组类型的世界,他们之中最主要的当属cv::Mat,这个结构可以视为是OpenCV所有C++实现的核心,OpenCV所有主要函数都或是cv::Mat类的成员,或是将cv::Mat作为参数,或是返回一个cv::Mat类型。很少有函数和这三者都没有关系。cv::Mat类用于表示任意维度的稠密数组。在本章中,“稠密”表示该数组的所有部分都有一个值存储,即使这...
2018-10-31 15:07:51 723
原创 学习OpenCV3——第三章:了解OpenCV的数据类型
一.OpenCV的数据类型OpenCV有很多的数据类型,他们都基于一些重要视觉概念的抽象而设计,以此提供相对简单、直观的表示和处理。同时,许多算法开发者需要一些相对有效的,可以推广或拓展以满足他们特定需求的基本数据结构。OpenCV库使用基础数据类型模板构建并特化这些模板,从而使每个人能更简单的执行操作并满足自己的需求。从组织结构的角度来看,OpenCV的基础数据类型主要分为三类: 直接...
2018-10-30 16:15:25 775 1
原创 学习OpenCV3——第二章:OpenCV初探
一.头文件在安装OpenCV库以及设置好编程环境之后,下一个任务就是用代码来做一些有趣的事情。为了完成这个工作,我们需要先讨论一下头文件。介绍如下:#include "opencv2/core/core.hpp"新式C++风格的结构以及数学运算#include "opencv2/flann/miniflann.hpp"最邻近搜索匹配函数#include "opencv2/i...
2018-10-29 17:01:40 1135
原创 学习OpenCV3——第一章:概述
OpenCV是一个开源的计算机视觉库,可以从http://opencv.org获取。下面给大家列一些相关网站,其中一些网站可能需要科学上网:《学习OpenCV3》的所有代码都可以在本书网站获取:http://bit.ly/learningOpenCV3OpenCV的源码获取可以在GitHub:http://github.com/opencv/opencvOpenCV官方网站:htt...
2018-10-29 09:50:07 749 4
原创 关于Opencv的一些杂物
@、DLL动态库的创建,隐式加载和显式加载1、https://blog.csdn.net/dcrmg/article/details/53437913@、15个你不可不知的cmd命令1.https://blog.csdn.net/dcrmg/article/details/52000188@、Qt5.11.1和VS2017环境配置1.https://blog.csdn.net/...
2018-09-17 17:11:19 356
原创 OpenCv收集的一些学习资料
@、OpenCV+Windows10 + Visual Studio 2017 + CMake 编译、开发环境配置及测试1.https://blog.csdn.net/u011043551/article/details/728528722.https://www.cnblogs.com/lzhu/p/8198654.html@、OpenCV一些不错的系列教程1.https://b...
2018-09-11 16:38:25 237
转载 opencv编译之后找不到opencv_worldxxx.lib的原因
在用cmake编译时,注意configure之后,是否生成opencv_world.lib是要自己勾选的。opencv_world.lib只是所有lib的一个打包,在使用的时候,直接在附加依赖项添加这一个就可以,主要是为了比较方便。没有这个的话,把其他所有的lib文件全添加是一个效果。一般不需要生成opencv_world,不然在实际工程项目里会造成比较大量的冗余。 其实你把编译生成的...
2018-09-07 08:57:53 17458 3
转载 几种基于膨胀和腐蚀的更高级运算,morphologyEx()函数
既然是基于膨胀和腐蚀的运算,那么再让我们详细了解一下膨胀和腐蚀到底对图像做了什么?第一种情况,对于二值图像来说腐蚀:核与其覆盖的图像部分做“与”操作,如果全为1,则该像素点为1,否则为0;也就是0容易得到,图像更多的地方变黑了,白色部分被腐蚀了膨胀:核与其覆盖的图像部分做“与”操作,如果全为0,则该像素点为0,否则为1;也就是1容易得到,图像更多的地方变白了,白色部分膨胀了第二种情...
2018-08-26 16:37:11 422
转载 阈值化操作——threshold()与adaptiveThreshold()
阈值化操作在图像处理中是一种常用的算法,比如图像的二值化就是一种最常见的一种阈值化操作。opencv2和opencv3中提供了直接阈值化操作cv::threshold()和自适应阈值化操作cv::adaptiveThreshold()两种阈值化操作接口,这里将对这两个接口进行介绍和对比。1、直接阈值化——cv::threshold()阈值化操作的基本思想是,给定一个输入数组和一个阈值,数组...
2018-08-26 16:15:27 2257
转载 OpenCV--提取水平与垂直线(形态学操作应用)
图像形态学操作的时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感,另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作–膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作,得到想要的结果。操作过程:读取原图; 转为灰度图像; 转为二值图像; 定义结构元素; 开操作。实例代码:void GetLine(){ ...
2018-08-26 10:48:49 376
转载 opencv关于直线的一些使用操作
霍夫变换(Hough Transform)的主要思想: OpenCV的霍夫变换(Hough Transform)直线检测 一条直线在平面直角坐标系(x-y)中可以用y=ax+b式表示,对于直线上一个确定的点(x0,y0),总符合y0-ax0=b,而它可以表示为参数平面坐标系(a-b)中的一条直线。因此,图像中的一个点对应参数平面的一条直线,同样,图像中的一条直线对应参数平面上的一...
2018-08-26 10:29:36 2959 1
转载 关于findContours的一些知识点
1 找轮廓findContoursfindContours有两个接口,区别在于需不需要输出hierarchy层次结构(可用于分析轮廓间关系,一般比较少用到)。直接找最外层轮廓RETR_EXTERNAL,结果输出全部轮廓点CHAIN_APPROX_NONEvector<vector<Point>> contours; findContours(edge...
2018-08-24 13:49:26 12198 2
转载 图像的梯度
一、图像梯度的定义图像函数f(x,y)在点(x,y)的梯度是一个具有大小和方向的矢量,设为Gx 和 Gy 分别表示x方向和y方向的梯度,这个梯度的矢量可以表示为: 这个矢量的幅度为 方向角为: 对于数字图像而言,相当于对二维离散函数求梯度,如下: G(x,y) = dx(i,j) + dy(i,j);dx(i,j) = I(i+1,j) - I...
2018-08-22 14:19:49 2891
转载 OpenCV常用函数极简简介
1、cvLoadImage:将图像文件加载至内存;2、cvNamedWindow:在屏幕上创建一个窗口;3、cvShowImage:在一个已创建好的窗口中显示图像;4、cvWaitKey:使程序暂停,等待用户触发一个按键操作;5、cvReleaseImage:释放图像文件所分配的内存;6、cvDestroyWindow:销毁显示图像文件的窗口;7、cvCreateFileCaptur...
2018-08-20 15:18:17 194
转载 Opencv 常用函数
#include <opencv2/opencv.hpp> //头文件using namespace cv; //包含cv命名空间 void main( ){ // 【1】读入一张图片,载入图像 Mat srcImage = imread("1.jpg"); // 【2】显示载入的图片 imshow("【原始图】",srcImage); // 【3】等待...
2018-08-20 15:15:32 244
转载 OpenCV实现基于Zernike矩的亚像素边缘检测
在做物体检测时,由于成本和应用场合的限制,不能够一味地增加相机的分辨率,或者已经用了分辨率很高的相机,但是视野范围很大,仍然无法实现很高的精度,这时就要考虑亚像素技术,亚像素技术就是在两个像素点之间进行进一步的细分,从而得到亚像素级别的边缘点的坐标(也就是float类型的坐标),一般来说,现有的技术可以做到2细分、4细分,甚至很牛的能做到更高,通过亚像素边缘检测技术的使用,可以节约成本,提高识别精...
2018-08-20 14:47:31 5934 2
转载 理解图像卷积操作的意义
数字信号处理中卷积卷积一词最开始出现在信号与线性系统中,信号与线性系统中讨论的就是信号经过一个线性系统以后发生的变化。由于现实情况中常常是一个信号前一时刻的输出影响着这一时刻的输出,所在一般利用系统的单位响应与系统的输入求卷积,以求得系统的输出信号(当然要求这个系统是线性时不变的)。 卷积的定义: 卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列x(n)和h(n),则卷积的结果...
2018-08-20 14:41:42 220
转载 opencv中的各种滤波函数
在图像处理中,尽可能消除图片中的噪声,消除噪声就需要用到滤波,在本次opencv学习中,学习了三个滤波方式。(1)平均滤波,就是将一个区域内的像素值求和取平均值,然后用这个平均值替换区域中心的像素值。blur(源Mat对象,目标Mat对象,Size对象,Point对象)//Size对象用来确定区域大小,Point对象如果x,y都是-1则表示更新区域中心的像素。(2)高斯滤波,也是将一个...
2018-07-27 15:35:03 463
opencv_contrib-4.1.0 opencv-4.1.0 VTK-8.2.0
2019-04-30
学习OpenCV3收集的例程
2018-11-21
Opencv3.4+Tesseract4.0+VS2017的MFC打开摄像头读取图像并识别把结果显示在对话框中
2018-05-19
opencv扩展模块opencv_contrib-3.4.0和opencv_contrib-3.4.1
2018-04-28
Opencv3.4+VS2017+MFC对话框打开摄像头、截图
2018-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人