openCV
文章平均质量分 77
高精度计算机视觉
人工智能与视像技术,对技术有点执着
展开
-
OpenVINO之text_detection_demo
这里不打算重复网上已经有的答案,想去具体了解的可以参考,https://medium.com/swlh/end-to-end-text-recognition-model-deployment-on-cpu-gpu-and-vpu-with-openvino-cb727114c5a9open_model_zoo/README.md at master · openvinotoolkit/open_model_zoo · GitHub如何编译与下载模型请参考这里,OpenVINO2022.1.原创 2022-03-18 22:51:08 · 432 阅读 · 0 评论 -
OpenCV导入时报错 ImportError: numpy.core.multiarray failed to import
在导入cv2的时候报错,(paddle) C:\Windows\system32>pythonPython 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32Type "help", "copyright", "credits" or "license" for more information.>>> import cv2Impor原创 2022-03-17 23:47:50 · 5609 阅读 · 1 评论 -
Ubuntu20.04编译安装Opencv4.5.5
平台:Ubuntu20.04CMAKE: cmake3.22.0 cmake-gui文件路径:~/opencv455/dev~/opencv455/opencv-4.5.5~/opencv455/opencv_contrib-4.5.5注意,我的编译路径是dev(相当于大家常用的build文件夹),配置和编译文件都在这里。配置Opencv准备好后$ cmake-gui进入配置界面,配置如下图所示,主要是要选好"where is the source code"和"whe原创 2022-03-15 18:20:57 · 6050 阅读 · 3 评论 -
Ubuntu20.04编译安装Opencv4.5.5安装包报错:Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
刚装好的系统Ubuntu20.04上,想编译安装一下Opencv455,会出现很多的"Could NOT find"报错,有些是完全是可以忽略的,有些用户可能会根据自己的需要安装,我这里列一下自己想安装的一些包。通用的解决办法首先,你要如何找到那些你想安装的文件包呢?一般我们可以通过apt-cache search libjpeg或apt search libjpeg来查找含有libjpeg关键字的包,然后根据描述看是否是我们所需要的包,查找完之后通过sudo apt install 这样原创 2022-03-15 16:05:01 · 9365 阅读 · 4 评论 -
anaconda安装opencv -> python[version=‘>=2.7,<2.8.0a0|>=3.5,<3.6.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0‘]
系统崩溃,机器重新装, 同样的配置和安装,突然报错,Collecting package metadata (current_repodata.json): doneSolving environment: failed with initial frozen solve. Retrying with flexible solve.Solving environment: failed with repodata from current_repodata.json, will retry wit原创 2022-03-10 12:30:34 · 7423 阅读 · 0 评论 -
OpenCV源码解析:目标检测trainCascade算法剖析之LBP基础
本文重点讲解LBP特征及OpenCV中LBP特征的基本处理。目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。用级联分类器实现目标检测在AI人工智能识别中应用十分广泛。正样本的选取原则正样本的尺寸不是必须一致的,从源码可以看到,这个是可以在输入图片文件的尺寸时设置大小从而实现在CreateSamples中进行裁剪的(参考cvCreateTrainingSamplesF...原创 2018-10-27 12:40:19 · 1843 阅读 · 0 评论 -
梯度下降法(steepest descent)和共轭梯度法(conjugate gradient)
写一篇自己的理解,算不上严格意义的证明,事实上很多熟悉的公式和推导方式都没有摆上来。推导的过程没有参考课本,这可能和个人习惯有关系,以前看别人著作时,很怕那种“显而易见”地描述,因为对作者而言显而易见的地方,对读者可能不是。对读者显而易见的地方,作者可能不这么认为。我一直的想法是,如果条件鲁棒,不论你从哪个角度(比如说展开成解析表达式,或多用向量表达式)去推导,结果应该都是一样的! ...原创 2018-10-14 22:34:22 · 4046 阅读 · 1 评论 -
OpenCV3.1录制视频+把图片合成视频(同时解决一个OpenCV不能打开自己录制的视频的小问题)
记一下,备忘。用OpenCV打开OpenCV录制的视频,发现报错,代码如下 cv::VideoCapture capture; capture.open("E:\\opencv.avi");追踪了一下,原来是打开要求用MJPG,bool AviMjpegStream::parseStrl(MjpegInputStream& in_str, uint8_t strea...原创 2018-10-06 13:33:00 · 859 阅读 · 1 评论 -
机器学习中,如何使用SpaceView完成图片批量转换和裁剪功能
因为tensorlow, caffe, openCV等数据训练时,经常需要使用大批量的同尺寸图片,因此,我特别在SpaceView中加入了批量大小转换和裁剪功能。使用非常简单,下面我们来看一下,第一步,打开批处理对话框第二步,设置批处理参数和模式:模式:stretch,只做图片拉伸,不会删减内容。crop表示剪切,比如下图,crop center表示剪切中间的256x256个像...原创 2018-09-10 10:43:28 · 1556 阅读 · 2 评论 -
OpenCV源码解析之在图片中找四边形-FindSquares
这个FindSquares算是比较典型的综合技能项目吧,用到的小技巧还不少,我们先看一下几个函数吧,函数static double angle的作用是求角度根据余弦定理:在平面座标中通过计算变换,最后可以得到:嗯,函数中直接用了这个结果。其余函数的说明1.函数Canny进行边缘检测,和Sobel原理差不多,不过相对加了些料,稍有点复杂,以后有时间再说吧。 2.函数...原创 2018-12-04 17:47:04 · 2963 阅读 · 1 评论 -
OpenCV源码解析之findContours
说明:openCv的contours是分级的,其寻边理论依据(方式)参考suzuki的论文《Topological structural analysis of digitized binary images by border following》。Contour 的寻边模式ModeopenCV通过一个矩阵来管理等级,矩阵的元素表示方法是:[Next, Previous, Fir...原创 2018-12-12 16:04:44 · 8035 阅读 · 1 评论 -
OpenCV之Kalman fileter(卡尔曼滤波)
原理的通俗解释用一个网上流传温度估计的例子(根据 k-1 时刻的温度值,估算 k 时刻的是实际温度值),为了通俗会意,我这里尽量避免使用专业术语。假设我们相信温度是恒定的,所以得到 k 时刻的温度预测值是跟 k-1 时刻一样的,假设是23 度,同时该值的高斯噪声的偏差是 5 度。然后,你从温度计那里得到了 k 时刻的温度值,假设是25 度,同时该值的偏差是 4 度。可见,整个Kal...原创 2018-12-13 13:24:57 · 1223 阅读 · 0 评论 -
Ubuntu18.04+OpenCV4.0的编译安装
目录结构opencv-4.0.1 |_____opencv_contrib-4.0.1/modules |_____build编译命令mkdir buildcd buildsudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswsca...原创 2019-02-02 12:19:35 · 1770 阅读 · 0 评论 -
OpenCV几个概念:dilate, erode, 开运算,闭运算
今天写程序的时候,差点把膨胀dilate的腐蚀erode弄反了。所以发个贴给自己备注一下。总结:膨胀dilate是白色的扩张,腐蚀erode是黑色的扩张;开运算=腐蚀>>膨胀,闭运算=膨胀>>腐蚀膨胀即是求局部最大值的操作,图像A与核B作卷积运算,计算核B覆盖区域的像素点的最大值,并把这个值赋值给锚点(anchor point)指定的像素。膨胀dilate针对白...原创 2019-02-14 22:36:53 · 2002 阅读 · 0 评论 -
VS2017的怪问题--错误: 未能完成操作。未指定的错误
OpenCV4.0出来已经好一阵了,一直用老版本3.4,今天折腾一下这个新版的。用vs2017编译opencv 4.0.1时出现的错误:IlmImf, 配置: Release x64 ------ 3>错误: 未能完成操作。未指定的错误打开3rdparty/IlmImf这个项目,没发现异常,但是右键属性居然无法显示属性等页面。估计可能的原因:找不到项目属性,路径错误。。。上网...原创 2019-02-25 18:17:44 · 13320 阅读 · 2 评论 -
OpenCv截取任意形状 -- 实例
OpenCV实例: 在图中按下鼠标画一个任意形状的区域,右击截取该区域内的图像,其中copyTo函数可根据掩码提取图片内容。#include "pch.h"#include<iostream>#include<opencv2\opencv.hpp>using namespace std;using namespace cv;cv::Mat img;cv:...原创 2019-06-12 00:07:02 · 2497 阅读 · 2 评论 -
OpenCV中cv::Mat 数据类型 depth()和type()
OpenCV中如何获取数据 矩阵cv::Mat的数据类型?一般有2个常用函数,depth()返回是基本的数据类型,也就是说每个数据元素的类型,该函数并不关心矩阵cv::Mat的维度,// <interface.h>#define CV_8U 0#define CV_8S 1#define CV_16U 2#define CV_16S 3#define...原创 2019-08-02 22:07:58 · 8614 阅读 · 0 评论 -
OpenCV源码解析:多尺度检测的训练trainCascade
(没时间一次性写完,更新中)该项目在Opencv Application的一部分,项目名称为opencv_trainCascade,它即可以用来训练lbp特征分类器,也可以是haar特征,有人说lbp特征训练起来更快,我没有专门比较过,不作评论;根据个人经验,lbp在很多场合会更稳定,所以我一般会选lbp特征。这里和检测(detectMultiScale)对应,这里我们仍然以汽车外形检测为例。...原创 2018-08-24 17:32:59 · 1137 阅读 · 1 评论 -
OpenCV源码解析:多尺度检测detectMultiScale
准备工作本例是一个汽车外形的识别程序。源码下载:https://download.csdn.net/download/tanmx219/10623808xml分类器及检测原理训练得到的xml分类器文件内容如下所示,<?xml version="1.0"?><opencv_storage><cascade> <stageType...原创 2018-08-24 10:07:34 · 11772 阅读 · 2 评论 -
OpenCV源码解析:FloodFill(漫水填充)函数
花木成畦手自栽 !先来两张wikipedia上的图,分别为4连通填充和8连通填充的示意图。FloodFill,一般的翻译是漫水填充,也就是把相邻的满足填充要求的颜色换成某个颜色的过程。填充方式一般是4连通,也就是扩展方向是上下左右4个方向,当然你也可以采用8连通填充,把角上那4个也包括进来直观地来说,可以这样填充,以stack堆栈为基础的递归填充一个很简单的...原创 2018-08-09 10:47:03 · 4262 阅读 · 0 评论 -
OpenCV源码解析之Mat类理解及内存管理
在OpenCV中,Mat是一个基础的类,也是最重要的类之一,它直接实现对图像的内存管理和数据操作。Mat的常见属性Mat类可以看作是一个数据结构,它以矩阵的形式来存储和管理数据,里面定义了大量的相关属性。而理解这些属性,是我们灵活运用OpenCV的基础。 属性 说明 data uchar型的指针。Mat类分为了两...原创 2018-08-09 10:24:22 · 5618 阅读 · 3 评论 -
OpenCV 源码详解之基本原理:卷积运算及其意义
卷积运算是如何进行的一维卷积定义:理解与计算举例:x(n)={x1, x2, x3, x4}; h(n)=(h1, h2, h3, h4);那么:Y(0)=x(0)h(0); //序号和=0+0=0Y(1)=x(0)h(1)+x(1)h(0) //序号和=0+1=1+0=1Y(2)=x(0)h(2)+x(1)h(1)+x(2)h(0); //序号和=0+2=...原创 2018-08-09 11:54:50 · 3952 阅读 · 1 评论 -
Visual Studio 2017下配置使用OpenCV3.4.1
安装OpenCV首先,到opencv.org上把opencv的windows包下载下来,我是一上去把就能下的几个全部down下来,免得以后要其他的还得再上来,如下,一个android包,一个ios包,windows下用的包就是这个:opencv-3.4.1-vc14_vc15.exe然后自己把这个包解压(安装)到你自己喜欢的目录,比如我自己的给目录名称就是D:\AOpencv,就是这个...原创 2018-08-06 10:07:21 · 5361 阅读 · 0 评论 -
Visual Studio 2017中OpenCV源码解读入门篇:配置OpenCV3.4.1生成VC项目并进行编译
对于大多数程序猿,图像视频音频等的开发学习,其实最难的不是界面,也不是代码风格,而是算法。而要了解算法,有两条是必经之路,第一是对原理的理解,大部情况下,这是一个数学问题;第二条,就是对源码的解读,你必须 清楚地知道数学理论是如何变成代码,并最终产生想要的结果的。学习OpenCv,也是如此。不过从OpenCV提供的源码来看,跨平台确实考虑得比较全面。当然如果你习惯于其他操作系统,这些可能都不是...原创 2018-08-06 13:07:02 · 1903 阅读 · 7 评论 -
OpenCV中,使用C++类的构造函数进行定义转换
OpenCV中采用了很多类似下面方式,在类的构造函数中动态进行定义转换#include "stdafx.h"class Mat {public: int val; void init() { val = 100; }};class holder{public: Mat* pMat; holder(Mat& test) { test.val = 101;...原创 2018-08-10 14:26:02 · 573 阅读 · 0 评论 -
OpenCV源码解析:协方差矩阵的计算--calcCovarMatrix
协方差矩阵在统计学与概率论中,协方差是指两个向量元素之间的相关性。设为n维随机变量方差的定义为:当存在两个随机变量X,Y时,其各个维度偏离其均值的程度就可以用协方差来定义:在物理上的理解,你可以认为协方差是指两个向量之相互影响的程度,单从数值上来看,协方差的数值越大,表示两个变量对其均值的变化同向的程度越大。当随机变量有多个的时候,一般不再使用X,Y这样的表述...原创 2018-08-11 23:25:03 · 4560 阅读 · 0 评论 -
OpenCV源码详解之InputArray, OutputArray
在OpenCV中,有两个代理类是经常出现的:InputArray和OutputArray,它巧妙地利用了C++的定义转换,辅助完成对矩阵的管理。定义typedef const _InputArray& InputArray;typedef InputArray InputArrayOfArrays;typedef const _OutputArray& OutputA...原创 2018-12-12 20:05:49 · 12125 阅读 · 1 评论 -
OpenCv源码解析:对HAL硬件加速层的支持
OpenCV的硬件加速层全称是OpenCV Hardware Acceleration Layer (HAL),一般来说,硬件厂商或开发人员可能会根据自己的实际情况,开发出独立于OpenCV的运算函数,以支持硬件优化,加快运算速度。这些功能性模块有可能是闭源的。为了实现顺利对接,OpenCV提供了一个简单的接口模块,当各厂家需要开发自己的运算模块时,只要实现这些接口即可。根据【1】,OpenC...原创 2018-08-12 15:24:45 · 6104 阅读 · 0 评论 -
OpenCV源码解析:直方图均衡化的详细算法和过程
理论基础所谓直方图,在图像中,指的就是各个像素的统计值,就是一个像素在整幅图像中出现次数。例如下面这张16个像素的图片,其直方图就是直方图均衡化,是将给定图像的直方图改造成均匀分布的直方图,从而扩大像素灰度值的动态范围,达到增强图像对比度的效果。OpenCV中的直方图均衡化OpneCv中,可以用calcHist进行图像的均衡化,也可以使用equalizeHist可...原创 2018-08-15 12:10:14 · 2380 阅读 · 2 评论 -
写一个OpenCV源码解析的博客 -- 图像开发处理之基础介绍
这里先写一个序,是督促自己常常来更新博文(名字没想好,叫OpenCV程序设计的艺术?)!很久了,想写一点关于OpenCV,FFMPEG,X264等源码解析的博客。考虑到基础都是相通的,所以决定先写一些基础性的知识。相对于FFMPEG和X264,OpenCV的基础性更强,计算功能也更单一。换句话说,你完全可以理解OpenCV的一个类型的计算方式而不用理会是否理解了另一个类型,这可能...原创 2018-08-08 10:13:08 · 2056 阅读 · 0 评论 -
从OpenCV源码了解traincascade训练报错:Train dataset for temp stage can not be filled.
如果你在测试trainCascade时,资料目录没有放在项目目录中,很有可能触发下面的报错:Train dataset for temp stage can not be filled.我们很容易定位这个错误的来源,在cascadeClassifier.cpp中bool CvCascadeClassifier::train( const string _cascadeDirName...原创 2018-08-17 22:52:34 · 1383 阅读 · 3 评论 -
OpenCV源码解析:Jacobi法计算矩阵的特征值和特征向量
(注:CSDN不适合写公式,只好上传图片格式)其中Pkk=Pll=cosθ, Plk=Pkl=sinθ,形式上就是这样,A*PT Aik = Aik×Pkk+Ail×Pkl Ail = Aik×Plk+Ail×PllP*A Aki = Pkk×Aki+ Pkl×Ali Ali = Plk×Aki+ Pll×Ali实际计算时,只计算那些必...原创 2018-08-13 21:39:20 · 2710 阅读 · 0 评论 -
OpenCV源码解析:partition分类(聚类)
功能:把数据类型为_Tp的一组集合进行聚类,也就是根据相似或相同的某特征进行归类,最后分成若干个类别。这里是以相似矩形的分类为例进行讲解,重点内容都在注释中。整体过程就是先判断两个矩形是否相似,如果相似,就决让其中一个做父节点,一个做子节点,然后再检查这个关系是否影响了其他节点的关系,如果有影响,就调整。检查完之后就沿所有的节点找到顶级父节点,如果该 父节点还没有分类,就分类成一个新的分类值...原创 2018-08-23 18:09:29 · 1288 阅读 · 0 评论 -
OpenCV的函数简要说明(不断收集扩充中)
机器学习函数关于机器学习的函数,很多在OpenCV的中文官网上有解释,这里不再重复贴出,链接如下,http://wiki.opencv.org.cn/index.php/机器学习中文参考手册CvSeq内存管理函数简要说明(1)CreatSeq功能:函数cvCreatSeq创建一序列并返回指向该序列的指针.格式CvSeq* cvCreatSeq(int s...原创 2018-08-23 20:14:12 · 852 阅读 · 0 评论 -
OpenCV源码解析:Hash链表的生成(cvGetFileNode)与读取(cvGetFileNodeByName)
从父节点派生子节点cvGetFileNode从CvFileNode* _map_node中,根据key生成一个node,设置后返回这个生成的node。举个应用的例子: 在函数icvXMLParseValue中,当读取XML分类器中一个map_node”<_>”时,其相应的key为key(rect),一个rect有4个参数(左上角x,y,右下角x,y),icvXMLParseVa...原创 2018-08-23 21:26:53 · 982 阅读 · 0 评论 -
OpenCV源码解析:动态内存管理(CvMemStorage与CvSeq)
整体上说,OpenCV的内存管理比较复杂。他不象其他很多库文件,把内在管理交给操作系统,而是通过大量的类,函数,和结构,自己实现对内存的动态管理。1. 内存存储器CvMemStorage一个对象性不强的结构体,它的作用还是在和CvSeq、文件读取等配合中体现出的。1.1 CvMemStorage结构图结构图如下所示,每个block内存块的头部,都是一个CvMemBlock的结构,然...原创 2018-08-24 08:38:19 · 2403 阅读 · 1 评论 -
OpenCV源码解析之基本数据类型操作与概念
Mat是何处理数据类型的在OpenCV中,矩阵在创建时,会传入一个数据类型,比如create函数要求传入_type; 然后,数据类型会被保存到flags中,create函数原型如下,inlinevoid Mat::create(int _rows, int _cols, int _type){ _type &= TYPE_MASK; if( dims <...原创 2018-08-09 10:07:02 · 770 阅读 · 0 评论