- 博客(22)
- 收藏
- 关注
原创 图像处理中,在图片上写字,包括中文与英文!
在数字图像处理中,有的时候便于标注图片信息,需要我们在图片上做一些文字标注.opencv提供了一套比较通用简单的写文字的函数接口: void cv::putText( cv::Mat& img, // 待绘制的图像 const string& text, // 待绘制的文字 cv::Point origin, // 文本框的左下角 int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN) double fontScale, // 尺
2020-05-26 20:32:33 1273
原创 通过迭代器安全删除map元素
由于工程需要,我们可能需要遍历map中的所有元素,并删除其中不满足要求的元素.一般情况下我们通过迭代器实现这一功能.迭代器实际上就是一个指针,如果没有安全删除指针,会造成迭代器失效,程序报错,或者迭代器错乱无法指向正确的元素./*该函数实现 删除相邻2个元素之间key或者value差值在thresh_dist以内的所有元素,最后保留符合条件的所有元素*/void deleteNearLine(map<int,int>& lines,int thresh_dist){
2020-05-18 20:05:42 1174
原创 利用tensorflow object detection API 训练MASK-RCNN (二)
接上文5.训练模型首先去官网上下载预训练模型https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md我下载的是mask_rcnn_inception_v2_coco模型,下载解压后可以在文件夹中有如下文件其次根据实际的训练...
2020-03-13 16:22:04 1537 8
原创 利用tensorflow object detection API 训练MASK-RCNN (一)
目前支持mask-rcnn的框架很多,网上也有很多训练该网络的教程,例如tensorflow+keras训练mask-rcnn进行实例分割训练,但是其横撑的.h5模型比较难通过opencv自带的接口调用.查阅资料发现,opencv4.0版本之后,dnn模块提供的接口能够接入mask-rcnn的模型(pb格式).小记下利用tensorflow object detection API自带的训练m...
2020-03-11 19:38:52 1821 29
原创 白话说系列---Selective Search(选择性搜索)
对于初期的目标检测模型,常常将目标检测转化对分类问题.也就是依次在输入图像中选取不同尺度和比例的区域进行分类判断,最终获取输入图像包含的目标类别和位置.大致流程如下:但是将原图所有图片按照不同尺度和比例进行测试则需要十分巨大的分类操作。比如将500*500的原图进行3种不同尺度和3种不同长宽比进行测试,则需要500*500*3*3=2250000次分类操作。为了避免对输入图像的其他背景信...
2019-12-25 19:58:31 285
原创 Ubuntu 18.04 无法定位 libjasper-dev问题
在opencv之前需要预装一些依赖库,其中有一项为libjasper-dev 。大部分会出现这种错误errorE: unable to locate libjasper-dev解决方法:sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiver...
2019-11-21 11:52:52 4142 3
原创 error while loading shared libraries:解决方法
曾编译一个项目,链接opencv动态库。编译通过但运行可执行文件时如下error while loading shared libraries:libopencv_highgui.so.3.4:cannot open shared object file: No such file or directory出现这个情况一般是找没有把库的安装路径配置到系统文件中去解决方法如下:查找...
2019-10-31 20:14:08 1421 2
原创 用opencv调用USB摄像头帧率低问题解释
当我们用opencv自带的接口VideoCapture 打开设备自带的摄像头或者usb连接的摄像头时。对于一些高清的摄像头画面有的时候会出现帧率很低的情况(大概是6FPS).画面获取是出现处理的第一步,太低的数据能力会对算法的处理造成一定困扰。本篇博客主要针对摄像头数据流的两种编码方式做个解释和对比,并给出如何解决帧率低的情况。一般的USB接口摄像头输出格式:H.264 、YUYV、MJP...
2019-10-31 19:56:30 12880 2
原创 opencv安装全套指南及常见问题解答---On Ubuntu
安装opencv 有的时候总是会出现一些奇奇怪怪的问题,我将之前安装过程中所踩的一些坑整理了一下供大家参考,希望能够帮助到你们~这边以安装opencv3.4.3+contrib为例1.首先下载源码opencv realsense下载链接:https://github.com/opencv/opencv可以通过 Tag选择你要的版本号然后直接下载zip包或者git clone源码。...
2019-09-20 15:26:25 2157 8
原创 训练yolo step by step
本文将详细地介绍如何用自己的数据训练yolo模型。1.数据获取准备图片数据并用打标工具进行数据打标打包工具下载链接https://blog.csdn.net/qq_34806812/article/details/81670310修改类别文件,选择VOC格式,框选目标并标记----保存 则在指定的保存路径下会生成与图片名一致的XML文件。2.利用Darknet训练模型...
2019-09-12 15:21:35 377
原创 ubuntu下c++编译链接caffe的工程
最近在做深度网络相关的项目,我们通常可以从github上download很多相关的源码,但是在我们的机子上编译的时候通常会遇到很多问题,将我最近踩的坑做了一些总结,希望对大家有所帮助。1.如果直接g++ ×××.cpp 出现下面或者是出现某种语法错误之类的[Click and drag to move] 一般来说是你的编译器没有满足c++11规则,此时一般要加上-std=c++11...
2018-09-20 20:05:30 878
原创 caffe detect model检测模型的性能指标测试 ---ubuntu系统
对于检测模型,我们不能用简单的准确率、精度等概念评价。这里介绍FDDB提供的一套检测的评价方法(ROC),流程主要如下:1.下载FDDB数据库 http://tamaraberg.com/faceDataset/originalPics.tar.gz解压后得到多个目录下的图片2.下载对应图片的标注信息 http://vis-www.cs.umass.edu/fddb/FDDB-fold...
2018-09-11 21:12:52 1099
原创 利用鼠标在图像上画框并实时显示鼠标所点击处坐标
我们在做小型项目的时候,有时为了实现良好的交互,或者更方便实时观察输入数据,通常需要使用到下列几项功能:1.利用鼠标在所显示的图像/视频中选取ROI区域2.实时显示鼠标所点击位置处的坐标信息本文贴出的代码实现了上述功能,代码如下:/*利用鼠标的响应函数实现功能*///在图片上画框并且鼠标放置画面位置处显示坐标#include<iostream>#includ...
2018-08-23 15:48:32 8457 11
原创 图像处理之SURF特征点检测
SURF全称即为加速版的具有鲁棒性的特征算法。由于SURF与sift算法一样是尺度不变特征变换算法,所以具有一定的鲁棒性,我们可以通过调节参数使得SURF能够达到实时跟踪的效果。与sift不同的是,它采用了hessian矩阵行列式近似值图像,使得算法的描述子维数降低(下文会提到)。而且采用和harr特征,使得程序运行时间大大提高。为了便于理解,可以参考:http://jacoxu.com/?p
2016-11-15 21:53:26 3653
原创 图像分割之区域生长
在数字图像处理中,常常需要我们把目标物体提取出来,在这里我们简单地把图像分成了我们需要的目标图像和不关心的背景图像。实现方法一:区域生长区域生长,故名思义就是让一颗种子在一个区域内按某种规则生长,待生长完全后,【这棵大植株】就是你要的目标区域了。所以我们在完成这个算法的时候就必须明确以下几点:①区域:我们可以规定其在我们想要的图像区域内生长,一般情况我们的区域就是整张图像范围。②种
2016-10-29 20:12:46 2731
原创 C++primer 顺序容器(2)
接上一篇,我们再来谈谈顺序容器的成员函数:c.insert(pos,elem);//即在pos位置插入元素elem程序执行过程是将元素类型的对象拷贝到容器中去的。其中push系列的函数执行机理也大致如此但是c++11新标准中引入了3个新成员(emplace_front、emplace、emplace_back)这三个成员对应原来的老成员分别是(push_front、insert、pus
2016-10-03 21:04:31 1747
原创 浅谈const
今天我们来谈谈const限定符。关键字const是用来对变量的类型加以限定,它的值不能被改变。因为const对象一旦创建之后就不能再改变,所以const对象必须被初始化。例const int k=42;//正确,编译时初始化const int k=get_size();//正确,运行时初始化,它的值取决于get_size()的返回值,且不再改变。const跟大多数的对象一样,在默认
2016-08-19 21:12:11 1918
原创 聊聊引用及指针那些事
【引用】就好比是给对象取了一个小名,但是它本身并不是对象。总结它有以下几个特点:①引用在定义的时候就要进行初始化,而且初始值必须是一个对象,而且二者类型必须一致。例如:int val=10;//定义一个整型对象int &rval=val;//正确,此时rval与val都是代表的都是10,我们可以通过改变其中的任何一个来改变它们的值.but 如果int &rval=10;//这种
2016-08-18 22:23:59 1832
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人