opencv
徐大大平凡之路
投身于工业自动化领域的软件开发。
展开
-
opencv轮廓提取(边缘检测)后随机删除部分点,以减少运算量
opencv不论是轮廓提取,还是边缘检测,都会得到很多点,一般来讲都会有几千个点,不论是查找直线,还是查找圆,对几千个点进行处理,都需要耗费很多时间。而很多时候,我们不需要这么多点,我们想要的结果是:随机的删除一些点,比如删除一半的点。c++中vector容器用的较多,所有的点都存放在vector中,vector从末尾删除数据的效果很多,但是从中间删除的话,效率很低,如果从中间删除,3000个原创 2016-07-05 09:05:09 · 5746 阅读 · 2 评论 -
Mat 拷贝总结
一、"=" 操作 浅拷贝Mat imageA = imread("..\\..\\bin\\2.bmp",0);Mat imageB = imageA;imageA.setTo(0);imageA.release();1、"="操作,相当于imageA 和 imageB指向了同一块内存。2、imageA.setTo(0)之后,imageB的图像内容也跟着改变了。3、当imageA.r...原创 2018-07-05 20:23:59 · 1716 阅读 · 1 评论 -
C++中 vector的几点总结
开发图像识别算法的时候,经常会用到vector容器,现在这里做一个记录和总结。c++标准库中,容器vector可以用来存放一组类型相同的数据。而且不同于数组的一点是,支持动态增长,也就是申明vector时,不需要像数组那样,定义长度。同时, vector是顺序表,表示的是一块连续的内存,元素被顺序存储。1、自定义结构体排序bool lessmark(Point p1, Poin原创 2016-08-09 17:03:07 · 1645 阅读 · 0 评论 -
opencv3.1.0 特征点检测与图像匹配(features2d、xfeatures2d)
1、得到特征点与特征点描述(SIFT SURF ORB)(1)SIFT#include vector key_points;Mat descriptor;Ptr sift = xfeatures2d::SIFT::create(0, 3, 0.04, 10);sift->detectAndCompute(image, noArray(), key_points, descri原创 2016-08-08 16:45:15 · 33493 阅读 · 8 评论 -
opencv免费、高性能的人脸检测函数
上午的时候,在网上随便逛逛,发现了一个蛮不错的资源,现记录并分享之。即为 免费、高性能的人脸检测函数。看到这里,不免会觉得说,opencv不是已经提供了人脸检测类了吗。是的,opencv已经提供了稳定可用的人脸检测函数。但我们,仍需要不断试验新的黑科技,说不定牛人提供的这个函数比opencv提供的效率更高,适应性更强呢。而事实上,牛人也是这么做的,各种数据展示了其比opencv提供函数的原创 2016-07-25 13:28:20 · 5362 阅读 · 1 评论 -
opencv knn,svm,ann,人脸识别类的使用总结
1、 knn需要引用的头文件 #include 用到的opencv类:KNearest *knn; 得到训练数据和相应的标记:trainData,将每一个训练矩阵归一化为相同的大小,假如为128行128列,则将其转换为1行128*128列存入trainData中,假如有10个分组,每组中50个样本,则最后得到的trainData为500行128*128列,tr原创 2016-07-21 09:37:26 · 6945 阅读 · 0 评论 -
opencv 基于KNN的手写数字字符识别
楼主为武汉某科技大学的机械小硕,由于某种原因,开始学习和使用opencv,所以算是半路出家和非科班出身,如有描述的不够专业地方,还请多多包涵和批评指正。本文主要实现对手写数字字符的识别,主要用到的方法为k-近邻分类方法,用到opencv提供的KNearest类。也是在网上看到的代码,觉得很好玩,然后下载了工程,原工程是opencv2早期版本,还是cvmat的时代,看起来很不方便和习惯。原创 2016-07-21 08:48:39 · 5520 阅读 · 3 评论 -
opencv 二值图像的孔洞填充
有的时候,我们需要对图像进行孔洞填充,一般想到的方法都是,使用findcontours函数,查找最外层轮廓,然后画出找到的轮廓。这确实是一种方法,但似乎不够高效。下面贴出一个函数,可以更好的实现这个功能。话不多说,上代码。开发环境 opencv2.4.13+vs2013 其他vs或者opencv版本应该也可以跑出来void chao_fillHole(const cv::Mat s原创 2016-07-20 14:19:13 · 17193 阅读 · 3 评论 -
opencv findcontour查找最大的内轮廓
问题是怎么来的呢 比如输入一幅图像,往往需要我们找最大的轮廓,如果是仅仅是查找最大的轮廓,那么问题也比较简单了,直接找出所有的轮廓,然后根据轮廓的面积,遍历查找出最大的轮廓即可。如果是找最大的外轮廓,那么问题也比较简单,因为findContours(image_contour_outside, contours_out, hierarchy_out, RETR_EXTERNAL,原创 2016-07-15 16:23:24 · 21126 阅读 · 8 评论 -
opencv2.4.13+vs2013开发环境配置+2.4.13配置lib列表
之前用的是opencv2.4.9+vs2013的开发环境,由于某种原因,想要更新到opencv2.4.13配置的主要步骤为:1、到opencv管网下载opencv2.4.13,位exe文件,双击即可解压到指定目录2、对电脑的环境变量进行设置3、VC++目录下设置引导目录和库目录4、添加附加依赖项具体步骤,这里不做详细论述,可参考百度经验在网上找了好久,竟然没有o原创 2016-07-12 16:00:10 · 18002 阅读 · 7 评论 -
opencv 骨架提取/图像细化
骨架提取/图像细,相信很多人都听说过,图像细化原理 可以参看这篇博文。由于opencv没有现成的函数,因此,看懂了原理之后,自己写了一个函数出来。现在分享一下代码。现在越来越觉得C博客的好处,可以看到好多前辈分享的代码,大大缩短了自己掌握图像处理技巧的时间。这种乐于分享的氛围,必将极大的促进技术的进步和革新。本代码配置条件 opencv2.4.9+vs2013 应该其他版本的v原创 2016-07-12 15:10:57 · 28598 阅读 · 10 评论 -
opencv-相机标定步骤、评估标定误差以及标定之后图像坐标到世界坐标的转换
前一段时间,研究了下相机标定。关于opencv相机标定,包括标定完后,世界坐标到 图像坐标的转换,以评估图像的标定误差,这些网上有很多资源和源代码。可是,相机标定完之后,我们想要的是,知道了图像坐标,想要得到它的世界坐标,或者我们已知图像上两个点之间的像素距离,现在我们想知道两个点之间的实际距离。楼主在网上搜了很多资源,问了很多人,都没有相关的代码,可以得到这样的结论:opencv没有提供原创 2016-07-06 14:36:35 · 20013 阅读 · 17 评论 -
OpenCV—画出时钟并动态同步系统时间
本文是看了网上一个博客的实例,觉得很好玩,复制代码,做了一些修改,调通了之后,做的一些分享。参考原文为:http://blog.csdn.net/xingchenbingbuyu/article/details/50762351主要修改的地方:1、获取系统时间 2、秒针更形象的显示如果想要看原理的话,详见本文参考的博客,这里不做叙述。下面贴出代码,供有兴趣的人参考。/开发转载 2016-07-06 10:27:40 · 1033 阅读 · 0 评论 -
opencv4.0.0 二维码检测
偶然间发现opencv4.0.0正式版已经发布了,听说有二维码检测功能,就试了试。目前还没有发现自带的文档中关于二维码检测的示例,所以自己探索了下,把代码记录下。话不多说,直接上代码。#include <iostream>#include<opencv2\opencv.hpp>using namespace cv;int main(){ //读...原创 2018-11-30 18:08:37 · 8773 阅读 · 3 评论