Opencv知识
yangdeshun888
本人QQ:2891720537,欢迎添加咨询问题。
展开
-
opencv中的Mat、CvMat以及IplImage介绍以及三者之间的转换
OpenCV中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage。这三种类型都可以代表和显示图像,区别是:Mat类型侧重于计算,数学性较高,OpenCV对Mat类型的计算进行了优化;CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。在opencv2.0之前,opencv是完全用C实现的,但是,IplIma...转载 2020-02-26 18:49:54 · 1557 阅读 · 0 评论 -
像素坐标、相机坐标、世界物理坐标之间的坐标转换条件。
1、从像素坐标直接变化为世界物理坐标 下面是两者直接的主要的变化关系: 其中的前俩个可以以变化为一个3*3的矩阵,但是R|T是3*4的矩阵,当我们想把其进行合并成一个矩阵的时候,需要对其进行变化,变换的规则是:不能改变结果; 应当以右边的矩阵为起点,依次向左进行变化;例如世界坐标系为了不改变平移特性,而进行了矩阵加1处理。原创 2016-11-01 12:16:51 · 21477 阅读 · 13 评论 -
onnx与tensorflow格式的相互转换,opencv直接调用pd文件进行预测,pytorch转换为onnx
onnx是Facebook打造的AI中间件,但是Tensorflow官方不支持onnx,所以只能用onnx自己提供的方式从tensorflow尝试转换Tensorflow模型转onnxTensorflow转onnx, onnx官方github上有提供转换的方式,地址为https://github.com/onnx/tutorials/blob/master/tutorials/OnnxTens...原创 2020-02-06 17:07:42 · 3697 阅读 · 0 评论 -
opencv的dnn调用yolov3原生态的网络进行预测的方法
总的运行代码为:#include <iostream>#include <opencv2/highgui.hpp>#include <opencv2/imgproc.hpp>#include <opencv2/dnn.hpp>#include <fstream>#include<time.h>using na...原创 2020-02-06 16:59:52 · 1478 阅读 · 2 评论 -
OpenCV中如何提取不规则ROI区域, 手眼标定hand_eye_calibration
opencv提取ROI区域:在做这个之前,首先来了解一下什么图像处理中的mask(遮罩),OpenCV中是如此定义Mask的:八位单通道的Mat对象,每个像素点值为零或者非零区域。当Mask对象添加到图像区上时,只有非零的区域是可见,Mask中所有像素值为零与图像重叠的区域就会不可见,也就是说Mask区域的形状与大小直接决定了你看到最终图像的大小与形状。一个具体的示例如下:可以看出,mas...原创 2020-02-02 16:08:04 · 3212 阅读 · 0 评论 -
总结|深度学习实现缺陷检测收集(参考论文,思路,代码)
前言缺陷检测是工业上非常重要的一个应用,由于缺陷多种多样,传统的机器视觉算法很难做到对缺陷特征完整的建模和迁移,复用性不大,要求区分工况,这会浪费大量的人力成本。深度学习在特征提取和定位上取得了非常好的效果,越来越多的学者和工程人员开始将深度学习算法引入到缺陷检测领域中,下面将会介绍几种深度学习算法在缺陷检测领域中的应用。A fast and robust convolutional ne...转载 2020-02-02 15:02:29 · 9906 阅读 · 1 评论 -
单镜头视觉系统检测车辆的测距方法
以前提过单目测距的问题,检测的障碍物2-D框加上摄像头的姿态和路面假设。以下根据公开发布的论文讨论具体的算法。注:深度学习直接估计深度图不属于这个议题。Vision-based ACC with a Single Camera: Bounds>著名的Mobileye论文,先看成像几何如图:本车A,前方车B和C,摄像头P焦距f,高度H,和障碍物B/C距离Z1/Z2,B/C检测框着地点...原创 2020-02-01 15:52:30 · 3984 阅读 · 2 评论 -
pycharm的python包opencv(cv2)无代码提示问题的解决
参考链接:pycharm的python包opencv(cv2)无代码提示问题的解决转载 2019-12-21 11:41:01 · 618 阅读 · 0 评论 -
使用Opencv的opencv_traincascade来训练属于自己的分类器,检测自己想检测的东西,666,从使用到放弃。
提供一个人脸检测的训练工程,其里面包括原始的训练样本、制作好的训练样本、训练指令等,感觉其样本分类特别麻烦其下载地址为:opencv使用cascade分类器训练人脸检测的样本与相关文件1 、opencv里的分类器大概介绍: OpenCV中有两个程序可以训练级联分类器: opencv_haartraining and opencv_traincascade``。 ``opencv_tr...原创 2018-05-21 09:12:24 · 24211 阅读 · 14 评论 -
背景建模或前景检测之GMM
博客:背景建模或前景检测之GMM自己的工程代码在开源中国:GMM源代码+详细注释本文通过OpenCV来实现一种前景检测算法——GMM,算法采用的思想来自论文[1][2][4]。在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应。然后在测试阶段,对新来的像素进行GMM匹配,如果该像素值能够匹配其中一个高斯,原创 2017-01-13 15:27:26 · 8577 阅读 · 3 评论 -
opencv编译库的方法跟注意小知识点
一、其中编译库的方式: 直接选择win pack的则是已经编译好的库,而选择sources则是需要使用camke来进行编译对于编译器的库。其中第一种的是适合VS2015以上的编译器,而第二种的是适合VS2013左右的库,其中根据自己的编译器选择适合的库很重要,否则会由于库的版本不对出现很多奇怪的问题。其中一个例子如下:这个使用的工具平台集是(V120)工程然后使用的是VC14的库,然后就出现了...原创 2016-10-14 20:24:48 · 640 阅读 · 0 评论 -
卡尔曼滤波器的理解,C代码实现,和opencv里面KalmanFilter 的使用
背景:卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器), 它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。卡尔曼滤波的一个典型实例是从一组有限的,包含噪声的,对物体位置的观察序列(可能有偏差)预测出物体的位置的坐标及速度。这种滤波方法以它的发明者鲁道夫.E.卡尔曼(Rudolph E. Kalman)命名,但是根据文献可知实际上Peter Swerling在原创 2016-04-19 21:18:40 · 7274 阅读 · 1 评论 -
关于OPencv里仿射变化和透射变换的理解和理论
当我们绕着图像原点进行图像旋转时,其旋转矩阵M是:此变换如果在sin和cos前面加个系数,则是进行旋转和缩放。如果要进行绕图像任意位置的旋转,则需计算出其:M=[α−β−βα(1−α)centerx−βcenteryβcenterx+(1−α)centery] 其中a的scale*cos(angle),b为scale*sin(angle),这个是具有缩放因子的,把scale置原创 2016-04-13 21:12:16 · 4164 阅读 · 0 评论 -
C++与opencv的一些编程和函数的使用错误总结 如何使用RGB来划分颜色,CV_RGB2HSV的转换
1.Vector的使用和清除里面所有的内容:vector<CvPoint2D64d>edgepoint; edgepoint.clear();//清除所有的东西。C++ vector删除特定元素的方法如下:for(it = v.begin();it!=v.end();){if(*it == 3){v.erase(it);continue...原创 2016-05-18 16:47:32 · 1352 阅读 · 0 评论 -
opencv的各个模块的作用介绍和设置摄像头参数,imwrite设置保存压缩比
A、学习opencv的同学应当都会遇到过在设置摄像头的分辨率时,好像opencv的set'函数没有起作用的感觉,其是这不是函数的问题,而是当我们太慢设置时,摄像头的参数会被置为默认参数。其应当如下:参数的类型与各个的意义:CV_CAP_PROP_POS_MSEC 视频当前点的毫秒值或视频捕捉的时间戳CV_CAP_PROP_POS_FRAMES 下次将被捕获的0基索引的帧CV_CAP...原创 2016-08-23 09:57:07 · 3479 阅读 · 0 评论 -
OpenCV学习笔记:opencv_core模块
一,简介:opencv最基础的库。包含exception,point,rect,size,slice,vector,matrix,image等数据结构,和相应的操作函数,以及一些基础算法。二,分析:opencv_core模块src文件包括如下图所示:下面按照依赖关系来分析各个头文件的作用(后面的头文件依赖于前面的头文件):Header Fil转载 2016-08-23 10:05:43 · 2836 阅读 · 0 评论 -
OpenCV学习笔记:opencv_highgui模块
1、简介:本模块为跨平台的gui/IO组件,支持平台包括windows,linux,mac,IOS,android,可支持图像/视频/摄像头的读取显示以及转码。2.分析:本模块为跨平台的gui/IO组件,包括如下图所示文件:头文件:ios.h,cap_ios.h , IOS平台相关事件,跳过分析;highgui_c.h , C/C++兼容头转载 2016-08-23 10:08:44 · 1854 阅读 · 0 评论 -
OpenCV学习笔记四:ImgProc模块
1、简介:这个模块包含一系列的常用图像处理算法。2、分析:此模块包含的文件如下图:其导出算法包括如下:/*M/////////////////////////////////////////////////////////////////////////////////////////// IMPORTANT: READ BEFORE DOWNLOAD转载 2016-08-23 10:11:54 · 2146 阅读 · 0 评论 -
VS编译无法打开libcmrt.lib,libc.lib等库文件、启动应用程序出现0xc000007b等问题的解决方法
1、错误 1 fatal error LNK1104: 无法打开文件“LIBCMTD.lib”这种错误的原因主要是包涵系统库文件目录出错了,或者库包含里没有继承父目录。其1、解决方法是: 出错例子: 其解决方法就是添加系统库目录上去,或者把下面继承父目录的打上勾。 2、其中启动应用程序会出现0xc0000007b的错误主要是因为有些dll文件不...原创 2017-02-14 23:01:17 · 4109 阅读 · 0 评论 -
通过opencv的封装函数实现对xml、yml文件的存储跟读取操作
通过使用Opencv的封装函数接口”FileStorage“可以很方便的实现xml、yml文件的读取操作。从而方便进行数据的存储。其相应的代码为:#include"opencv2//opencv.hpp"#include"opencv2//highgui//highgui.hpp"using namespace std;using namespace cv;typedef struc...原创 2018-09-03 16:29:15 · 535 阅读 · 0 评论 -
二维码识别检测的几大开源库比较
QR码的几大开源库对比: 二维码已经进入人们的日常生活中,尤其是日本Denso Wave公司1994年发明的QR码(Quick Response),由于其易于检测、写入信息量大、提供强大的纠错机制,应用最为广泛,可说是名副其实的第一大图像识别应用。QR码的检测和解码成为很多应用开发的必备,面对众多的开源库,到底哪一种是比较好的呢?BoofCV的作者Peter Abe...原创 2019-08-10 18:02:24 · 22416 阅读 · 2 评论 -
进行人脸简单的颜色融合方法,和使用MSL
1、获取人脸的roi的mask区域,主要通过获取边缘点的凸包,然后填充凸边缘即可达到相应的mask,其代码代码如下:def mask_from_points(size, points, erode_flag=1): #其中points是(68,2)的检测到人脸关键点坐标矩阵 radius = 10 # 腐蚀的核大小 kernel = np.ones((radius,...原创 2019-08-06 15:38:56 · 1444 阅读 · 0 评论 -
C++跟C#获取电脑上连接的多个摄像头名称与编号
1、其中C++获取多个摄像头的名称,然后根据名称对应其编号,从而可以使用opencv进行按编号打开特定的摄像头:#include<iostream>#include "strmif.h"#include <initguid.h>#include<vector>#include<string>#pragma comment(lib, ...原创 2019-04-10 16:35:30 · 4361 阅读 · 0 评论 -
opencv的初始化Mat、SVM、画多线条polylines
1、通过数组指针进行初始Mat变量:例如: uchar arr[4][3] = { { 1, 1,1 },{ 2, 2,2 },{ 3, 3,3 },{ 4,4, 4 } }; cv::Mat srcData(4, 3, CV_8UC1, arr); cout << "srcData=\n" << srcData << endl;...原创 2019-02-20 15:52:50 · 1523 阅读 · 0 评论 -
镜头主要参数与光 源 选 型,选型焦距计算公式,CS、C接口工业镜头与M12镜头的关系知识。
1.焦距(FocalLength) 焦距是从镜头的中心点到胶平面上所形成的清晰影像之间的距离。焦距的大小决定着视角的大小,焦距数值小,视角大,所观察的范围也大;焦距数值大,视角小,观察范围小。根据焦距能否调节,可分为定焦镜头和变焦镜头两大类。 2.光圈(Iris) 用F表示,以镜头焦距f和通光孔径D的比值来衡量。每个镜头上都标有最大F值,例如 8mm /F1.4代表最大孔径为 5...原创 2016-06-08 10:50:17 · 26825 阅读 · 1 评论 -
使用debugView进行调试代码,这样子就省了控制log文件的问题
介绍:debugview 可以捕获程序中由TRACE(debug版本)和OutputDebugString输出的信息。支持Debug、Release模式编译的程序。其还支持输出信息过滤,可以过滤掉很多无用的输出信息,它这个过滤不是过滤已经输出的信息,而是过滤接下来会接收到的debug打印信息。所以要注意。其设置界面为:参考:DebugView 调试入门Net程序调试与追踪的一些方法...原创 2019-01-17 18:54:04 · 2197 阅读 · 0 评论 -
相机、分类器、双目、结构光、打印机分辨率的基本知识
1.相机基本的原因: 理想的小孔成像是不会有畸变的,但是相机镜头是一个透镜而不是小孔,其会导致进来的光点产生偏移,从而畸变。其两者的结构如下:相机的镜头看出是两个凸镜和一个平面玻璃,则其光是经过两次折射的,从上到下的折射率是不同的,其中的蓝色线是实际小孔成像时的光线,但是与实际进来的红色线有偏差,这就是畸变的原因,不同位置畸变是不一样的。 2、相机内外参数、畸变参数求...原创 2016-05-12 17:59:11 · 2995 阅读 · 0 评论 -
相机的像素精度,物理定位精度,亚像素定位之间的关系和进行像素的固定误差累积
用一张棋盘格来进行图像的像素精度计算,其计算程序是: #include"opencv2/opencv.hpp"using namespace cv;int main(){ Mat srcimg = imread("6.bmp"); Mat gray; cvtColor(srcimg,gray,CV_RGB2GRAY); Size board_sz = Size(6,9);...原创 2016-05-03 22:59:27 · 25813 阅读 · 5 评论 -
相机的变焦,对焦和景深的理解和照相機的成像原理
首先认识焦距:是指平行光线经透镜折射或曲面镜反射后的会聚点,点到镜片中心的距离就是f焦距。相机成像时最清晰的位置就是感光阵列位于焦点处。焦距的作用:焦距的大小决定着相机视野的范围大小,一般焦距越大视野越小,焦距越小视野就越大,如果相同的物体在长焦距和短焦距下拍摄,其大小是不一样的,如下图所示:第二幅图里的是启用光学变焦,其移动的镜头不是原来第一幅里的镜头,其应当是多组镜头合成后的效果使...原创 2016-04-28 22:42:07 · 26121 阅读 · 0 评论 -
解决opencv无法在图片上添加中文的问题。
1、由于opencv的putext函数无法在图片上输入中文,这里使用的是一个第三方的库,其方法为: OpenCV版本一直在更新,但至今依然没有往图像中添加中文注释的功能函数,本文基于freetype和OpenCV向读者推荐一种图像写入中文的方法。一、下载freetype库并配置1、从 http://download.csdn.net/detail/yangdashi888/98原创 2017-05-02 15:26:50 · 6060 阅读 · 0 评论