
OpenCV
月亮是蓝色
纸上得来终觉浅,绝知此事要躬行
展开
-
python3安装opencv3扩展库以及jupyter环境下出现的问题汇总
由于需要使用SURF算法,而opencv是个不错的选择。但是opencv3版本的将一些不稳定的算法例如SURF算法放到了扩展库中,普通下载的opencv3库没有将这些算法包含在内。则需要下载对应opencv_contrib.一:下载对应版本的opencv的轮子(wheel)python一般安装库的方法采用pip install +库名。但是由于opencv好像是不支持python3的,不原创 2018-03-18 20:21:22 · 3527 阅读 · 0 评论 -
【opencv】逼进多边形曲线
approxPolyDP函数是opencv中利用来对指定的点集进行逼近,其逼近的精度是可设置的对应的函数为:void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed);例如:approxPolyDP(contourMat, approxCurve, 10, true)原创 2018-01-19 18:55:15 · 1817 阅读 · 0 评论 -
【opencv】findContours轮廓检测与画轮廓drawContours
画不多说,直接上代码,代码解释已经够详细了#include#includeusing namespace cv;using namespace std;/*因为关于关于边缘检测可以检测出边界的像素,但是他并没有将轮廓作为一个整体,所以这里介绍的轮廓检测就是把这些边缘像素组装成轮廓,因此轮廓检测前提是二值图像*/int main(){ Mat srcImage, srcImage原创 2018-01-19 17:10:32 · 2126 阅读 · 0 评论 -
【opencv】函数copyTo() 与clone()
copyTo 也是深拷贝,但是否申请新的内存空间,取决于dst矩阵头中的大小信息是否与src一至,若一致则只深拷贝并不申请新的空间,否则先申请空间后再进行拷贝.clone 是完全的深拷贝,在内存中申请新的空间用法:Mat A = Mat::ones(4,5,CV_32F);Mat B = A.clone() //clone 是完全的深拷贝,在内存中申请新的空间,与A独立Mat C;A.原创 2017-11-05 10:45:25 · 1834 阅读 · 0 评论 -
【opencv】最小包围矩形minAreaRect与最小包围圆minEnclosingCircl详解
一、RotatedRect类RotatedRect该类表示平面上的旋转矩形,该类对象有三个重要属性:矩形中心点(质心),边长(长和宽),旋转角度。三种构造函数和三种成员操作函数,RotatedRect类定义如下:class CV_EXPORTS RotatedRect { public: //构造函数 RotatedRect(); RotatedRect(const Po原创 2018-01-18 19:34:20 · 6532 阅读 · 2 评论 -
【opencv】边缘检测之Canny算法详解
图像的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不原创 2018-01-17 18:57:11 · 12483 阅读 · 0 评论 -
【opencv】仿射变换
图像几何变换之仿射变换1:定义:仿射变换的功能是从二维坐标到二维坐标之间的线性变换,且保持二维图形的“平直性”和“平行性”(直线之间的相对位置关系保持不变,平行线经仿射变换后依然为平行线,且直线上点的位置顺序不会发生变化)。非共线的三对对应点确定一个唯一的仿射变换。。仿射变换可以通过一系列的原子变换的复合来实现,包括平移,缩放,翻转,旋转和剪切。这类变换可以用一个3*3的矩阵M来表原创 2018-01-17 11:57:32 · 3479 阅读 · 1 评论 -
【opencv3.1.0】opencv3.1.0配置contrib3.1.0+vs++2013(64位)+SIFT程序测试
本人配置的是vs++2013(64位)+opencv3.1.0+contrib3.1.01:配置所需的文件:opencv3.1.0:下载方式可以从官网:点击打开链接 此时解压安装得到两个文件夹build 和source,其中source才是后面我们需要的,build是已编译的没有用,我们得重新编译。 也可以从GitHub中下载对应的版原创 2018-01-16 11:09:03 · 1657 阅读 · 2 评论 -
OpenCV视频剪切
往往用OpenCV进行视频处理时需要对视频进行前期预处理,此时视频的剪切是必不可少的,经常会剪切指定帧之间的视频。话不多说,看代码:#include using namespace cv; using namespace std;int main(){ //【1】读入视频 VideoCapture capture("/************/.avi");原创 2017-11-03 16:28:23 · 3160 阅读 · 0 评论 -
VedioCapture类介绍
VedioCapture定义的成员函数class CV_EXPORTS_W VideoCapture{public: CV_WRAP VideoCapture(); CV_WRAP VideoCapture(const string& filename); //读取视频文件 CV_WRAP VideoCapture(int device); //打开摄原创 2017-11-03 09:07:31 · 1343 阅读 · 0 评论 -
图像的运算
原理比较简单,就是两幅大小相同的图像进行加减乘除,与或非。这里要说一下,有两个要解释一下,一个是除,表示的是图像求反后相乘,一个是非,只能是图像本身自己玩。 然后就是说下这几种应用的主要用途,和方法 算数运算 加法:一个场景的多幅图像相加求平均——>去除加性噪声 减法:加了变化的图像减去未变化的图像(掩模图像)——>运动物体检测 乘法:与二值图像相转载 2017-11-06 21:43:12 · 2048 阅读 · 0 评论 -
十三种基于直方图的图像全局二值化算法原理、实现、代码及效果
图像二值化的目的是最大限度的将图象中感兴趣的部分保留下来,在很多情况下,也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果。 在这些庞大的分类方法中,基于直方图的全局二值算法占有了绝对的市场份额,这些转载 2017-10-29 09:23:18 · 771 阅读 · 0 评论 -
python中opencv imshow函数显示一片白色原因
imshow显示类型首先应当明确的是,opencv中imshow内部的参数类型可以分为两种。(1)当输入矩阵是uint8类型的时候,此时imshow显示图像的时候,会认为输入矩阵的范围在0-255之间。(2)如果imshow的参数是double类型的时候,那么imshow会认为输入矩阵的范围在0-1。显示出现问题原因:用OpenCV中imread输入照片后是一个数组对象,在进行一系列的对数组操作后...原创 2018-04-29 15:23:55 · 31841 阅读 · 12 评论