- 博客(122)
- 资源 (3)
- 收藏
- 关注
原创 [边缘检测算法] Sobel算子及其PC端优化提速20几倍
文章目录前言一、Sobel算子二、实现与优化1.原始版本2.第一版优化3.第二版优化4.第三版优化5.第四版优化6.第五版优化前言 Sobel是图像处理中非常常见的一种边缘检测算法,本文基于C++和OpenCV对Sobel进行了实现,并对代码进行优化。一、Sobel算子 Sobel算子是图像处理中的一个离散微分算子,经典的Sobel算子包含了一个33的矩阵(OpenCV中的Sobel是包含其它尺寸的,本文
2021-03-05 11:12:41 3702 1
原创 [tensorflow]tensorflow/core/kernels/BUILD:6589:1: no such package ‘@icu//‘:
在编译tensorflow的C++接口的时候,bazel执行的时候报了错误:ERROR: /home/zcx/tensorflow-r1.12/tensorflow/core/kernels/BUILD:6589:1: no such package '@icu//': java.io.IOException: thread interrupted and referenced by '...
2021-01-25 13:38:56 825 1
原创 win10编译protobuf
1、从官方github下载windows的源码:https://hub.fastgit.org/protocolbuffers/protobuf/archive/v3.4.0.zip2、解压得到工程目录3、打开cmake-gui,设置源码路径和cmake生成路径:3.1 点击Configure生成配置,弹出的窗口选自己的配置的VS版本和要编译的版本(x64、win32或者跨平台)3.2、编译好后可能会报错:解决方法:把protobuf_BUILD_TESTS取消勾选,重新点击Config
2020-10-24 10:13:56 1053
原创 tensorflow1.x C++接口调用keras-yolo3模型
一、废话 今天花了一个下午时间,把qqwweee/keras-yolo3的模型转到tensorflow的pb,然后通过tensorflow 1.x提供的接口,把模型输出后的后处理加到计算图中,再保存为一个新的pb模型,这样,新的pb模型输出的就是转换后的坐标(x,y,w,h)和置信度与概率. 这样做主要是我想用tensorflow的C++接口来调用pb模型,所以想把这部分后处理写到计算图里,加载运行后得到比较直接
2020-10-20 23:29:05 457
原创 [Pytorch].pth转.pt文件
Pytorch的模型文件一般会保存为.pth文件,但是其C++接口一般读取的是.pt文件,因此,C++在调用Pytorch训练好的模型文件的时候就需要进行一个转换,转换为.pt文件,才能够读取。所以在转换的时候,首先就需要先将模型文件读取进来,然后利用pytorch提供的函数torch.jit.trace进行转换,这个函数的声明为:def trace(func, ...
2020-07-06 10:55:52 19953 11
原创 [tensorflow] Cannot uninstall wrapt
我在安装tensorflow的时候遇到这样的问题:那就查下资料,查到的解决方案是,输入以下指令安装相应的库即可:pip install -U --ignore-installed wrapt enum34 simplejson netaddr...
2020-06-11 08:36:55 372
原创 《Recent Advances in Deep Learning for Object Detection 》笔记
最近看了一篇目标检测的综述,之前对目标检测的认识不是很多,所以简单地记录一下笔记。这篇论文主要讲了目前的目标检测算法的一些设置、检测范式、基准等,包括了传统算法和深度学习算法,主要侧重深度学习算法部分。一、传统方法传统的目标检测算法主要是三个步骤:1、候选框生成(proposal generation):候选框生成,主要是筛选并提取出可能包含目标的区域,通常为矩形框;2、特征向量提...
2020-06-02 13:22:18 1357
原创 win10编译tensorflow C++接口
原文地址:https://www.bearoom.xyz/2018/08/28/win10-build-tf-cc/首先,我觉得这是一个比较DT的活,因为,tensorflow支持最好的编程语言应该是python(应该说大部分深度学习框架支持的最好的语言都是Python),tensorflow的底层说是C/C++编写的,但是,感觉它对C/C++真的很不友好,有关Python的资料一查一大把,...
2020-05-26 10:09:40 19941 47
原创 基于Keras的mnist手写数字识别
首先,在众多深度学习框架中,我最开始上手的框架(因为那时候先接触的caffe,配置使用都太麻烦了)是Keras,什么叫做搞什么深度学习,我不过是搭积木罢了,这句话真的太适合形容Keras了。Keras是一个高级的深度学习框架,是架设于tensorflow、Theano、CNTK三大深度学习框架之上的,可以设置切换后台为其中之一,不过目前比较多的应该是用tensorflow作为后台,tensorfl...
2020-05-26 09:11:51 1082
原创 C++:log日志
前言 日志一般是记录一些程序运行信息的文件,一般是用于快速定位错误所在,追踪程序运行的过程和进度、采集运行环境等作用。说白了简单粗暴点就是程序挂了,可以看到大概在哪里挂的,挂的原因可能有哪些等作用。 最近在github上找了些C++的日志库,做了些简单的使用记录。一、NanoLog C++ 11 在github上找到的NanoLog有几个版本,不过我只下载了两个星星数量最高的,一个是...
2020-05-05 21:54:49 6243 2
原创 YOLO v4
源权重文件在Google driver上:https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT,有245MB。速度简单测试了下转keras后的速度,输入大小为416*416,GTX1060 要260ms左右,CPU I7-7700要1s左右,这速度不行,可能也跟转了keras的代码有关,darknet的还没跑,困了,...
2020-04-28 00:42:12 2347 11
原创 C++:http消息
前言 最近的一些开发,需要用到http服务,大致是两种,一种是我们算法端起http服务,等到后端发送消息给算法,然后算法去解析消息,得到我们要的图像数据;第二种是,我们算法端处理完图像之后,需要将结果发送给后端,那么如果是后端发送给我们的,其实可以将处理完的结果返回即可;但也有一种情况是,需要我们算法去给后端发消息的。 所以这其中就涉及两种情形:第一种是算法起服务,第二种是算法发送http...
2020-04-25 22:48:00 2750 3
原创 偏要叫[C++] Base64编码
前言 Base64非常常见的用于传输8Bit字节码的编码方式之一,也就是采用64个可打印的自体来编码二进制数据进行传输的方法。在ASCII表中,0~31、127是控制字符32~126属于可打印字符,而Http协议下传输二进制数据,是需要把数据转为字符来传输的,所以实际上能用于传输的就是ASCII表中的32~126这95个字符,base64则是采用了其中的64个来编码。 标准base64中可...
2020-04-24 23:50:44 605
原创 树莓派上几种人脸检测模型对比
前言 人脸检测相对其他计算机视觉技术而言,可以算是比较烂大街的技术,各家都有各家的人脸检测技术,而且开源的很多人脸检测技术都有非常高的精度和速度。接下来就对github上找到的几款人脸检测模型进行对比。 测试图像,大小2048*1150,如下: 我的运行硬件是4G版的树莓派4B,运行的推理平台是腾讯开源的ncnn框架,运行语言是C++。本次测试的模型如下:模型地址...
2020-04-12 23:03:07 2666 3
原创 树莓派安装MNN
前言 MNN是阿里开源的一款用于边缘端设备部署、推理深度学习模型的框架,与腾讯开源的ncnn类似哈。 MNN在[github](https://github.com/alibaba/MNN "github")上有开源,同时官方也有提供[开发接口文档](https://www.yuque.com/mnn "开发接口文档");而且写的比较详细。跟ncnn一样,MNN也是在手机端用的还比较多,...
2020-04-12 09:54:46 1987
原创 树莓派安装ncnn
前言 ncnn是腾讯开源的用于手机端部署深度学习模型的框架,目前也支持在树莓派上使用。ncnn提供C++的借口,支持caffe等框架的模型进行转换。 目前ncnn已经开源,代码放[github](https://github.com/Tencent/ncnn "github")上,但是原版的代码对tensorflow支持不是很好,因此有大神搞了个支持tensorflow的ncnn,也在g...
2020-04-12 00:22:24 1802
原创 白平衡之完美反射算法
一、算法背景 白平衡是图像处理比较常见的一个概念,在采集图像的过程中,相机的感光元件或者镜头会对原始色彩造成影响,而白平衡技术通常可以用来校正这种光线和镜头对颜色影响。所以现在先记录一个白平衡算法,叫做完美反射算法,这个算法原理也不是有多复杂,但是效果还是挺好的,而且基本也不需要调节参数就有效果了。完美反射算法很多博客都有介绍,而且实际上也还是就几个公式,所以我也是简单记录重要的公式和实现代码...
2020-04-05 15:48:36 4951 4
原创 白平衡之灰度世界算法
一、算法背景 白平衡是图像处理比较常见的一个概念,在采集图像的过程中,相机的感光元件或者镜头会对原始色彩造成影响,而白平衡技术通常可以用来校正这种光线和镜头对颜色影响。所以现在先记录一个白平衡算法,叫做灰度世界算法,这个算法很多博客都有介绍,而且实际上就几个公式,所以我也是简单记录重要的公式和实现代码而已。二、算法原理 灰度世界算法(Gray World)假设认为,一幅彩色图像中,RGB...
2020-04-05 00:43:19 3336
原创 暗通道去雾法
一、算法背景 暗通道先验去雾算法是大神何恺明2009年发表在CVPR上的一篇论文,还获得了当年的CVPR最佳论文。 根据论文的介绍,暗通道去雾算法是基于一个关键的观察:在没有雾霾的室外图像中,大多数局部区域包含一些像素,这些像素在至少一个颜色通道中具有非常低的强度(原文:It is based on a key observation - most local patches in haz...
2020-03-29 17:39:31 13459 3
原创 树莓派3B+安装wordpress
前言 我的树莓派用的是3B+,内存卡64G,装了树莓派官方提供的系统。最近想重新写自己的技术博客,做一些记录和笔记,因此重新折腾起wordpress来,这里只是要做内网访问即可,只是自己在家写博客用,所以外网就访问不了,但是我要的就是自己在家记录些技术就可以了哈。系统什么的就默认是装好的,接下来按照步骤一步一步来安装。一、安装 Apache2、MySQL、PHP 因为不懂前端后端开发,所...
2020-03-22 13:59:55 1275 1
原创 Python调用OpenCV读写视频
最近因为经常对视频进行操作,所以记录下Python用opencv来读写视频的方法。一、opencv读视频python调用opencv来读视频比较简单,可以直接调用cv2.VideoCapture来读取视频和摄像头,基本上,常见的avi和mp4都能够正常读取。cv2.VideoCapture是通过传入数字来读取对应的摄像头,或者通过传入一个路径字符串来读取对应的视频文件。最简单直接的读取...
2020-02-09 14:35:14 3721 2
原创 [tensorflow] FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated
在导入tensorflow的时候报了这样的提示:/usr/local/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; i...
2020-01-28 10:41:04 692 1
原创 VS Qt国际化操作
开发一个软件的时候有时候会遇到需要进行国际化的操作,也就是说一些显示可能因为需求而要改为另一种语言,像一些常见的软件是会提供一些语言包,然后再软件中加载就可以更换显示语言了,今天这一篇讲的就是这个,而且暂时针对VS下开发Qt而言,如果在Qt Creator上开发的话,可能会有不同,但是大致还是一样的。在VS上开发Qt的项目的话是,Qt的VS插件是很有用的,现在我们的国际化操作也是要依赖这一个小...
2020-01-11 09:48:57 708 4
原创 OpenCV--基于直线检测的文本图像倾斜校正
图像倾斜矫正的方式有很多种,今天简单介绍一种基于直线检查的倾斜校正。这种方法暂时在如下图的文本文件上测试过,不一定能针对所有:首先,因为这种图像基本是比较常见的白底黑字,所以首先对这幅图做一个灰度化,灰度化之后做一个二值化,得到二值图像:二值化之后,将X轴方向的的像素点连起来,这里我采用的是形态学的膨胀,因为我做二值化的时候采用了取反的操作,这里可以考虑不取反,但是要用腐蚀来做...
2019-12-02 11:26:07 4582 2
原创 Python调用OpenCV形态学
图像形态学处理包括腐蚀、膨胀、开运算、闭运算、形态学梯度、礼帽(顶帽)、黑帽等运算。1、腐蚀腐蚀可以理解为前景像素会被腐蚀为背景像素,以白色255为前景,得到的效果就是白色变小、变细,黑色变大变粗:importcv2importnumpyasnpimg=cv2.imread('lena.jpg',0)kernel=np.ones((5,5),np.uint...
2019-11-21 14:21:43 245
原创 Keras设置后端数据维度顺序
Keras是比较高级的深度学习框架,其对几个比较常见的主流深度学习框架的封装而来,也就是按照Keras的说法就是其后端是以Tensorflow、Theano和CNTK为基础封装而来。CNTK我没做过多了解,tensorflow的tensor的维度顺序和Theano的维度顺序是不一样的,所以在使用Keras的时候要格外注意这一点,如果后端不同的话,设置的数据维度顺序也是要不一样的。tensorf...
2019-11-17 10:05:00 1126
原创 Python调用OpenCV代码优化
OpenCV提供的API的代码大部分是经过优化的,很多都是经过SSE或者AVX等技术优化了函数,并且是默认打开优化的。其实,我们也可以查询OpenCV是否进行了函数优化,查询的函数为:cv2.useOptimized()如果打开了优化的话是返回True,反之返回False。我们也设置关闭或者开启优化,设置的函数为:cv2.setUseOptimized(False)cv2...
2019-11-13 11:16:34 587
原创 Python调用OpenCV滤波
这一篇记录几种OpenCV提供的滤波函数,包括2D卷积、平均滤波、高斯滤波、中值滤波和双边滤波。1、2D卷积2D卷积使用的是OpenCV提供的filter2D()函数,该函数需要传入一个卷积核,这个卷积核可以通过numpy来构造:importnumpyasnpimportcv2ascvsrc=cv.imread("D:/lena.bmp")kernel=n...
2019-11-11 08:25:52 477
原创 Python调用OpenCV测试程序运行时间
OpenCV有提供测代码运行时间的函数,类似C/C++的。估计是一样的吧,看结果importnumpyasnpimportcv2ascvsrc=cv.imread("D:/lena.bmp")src=cv.resize(src,(1024,1024))e1=cv.getTickCount()img1=cv.medianBl...
2019-11-10 09:40:06 547
原创 Python调用OpenCV像素操作
Python调用OpenCV进行操作的时候基本上感觉就是对numpy进行操作,跟numpy是挺相关的。1、像素操作OpenCV获取图像(x,y)处的像素值:px=img[x,y]当图像是三通道的时候返回的是BGR三通道的值,如果是灰度图的话就返回一个亮度值同样的如果要对图像(x,y)处赋值的话,也通过这种方式来实现:#三通道img[x,y]=[255,255,255]...
2019-11-10 09:36:00 1084
原创 Python调用OpenCV几何变换
这一篇就记录三个:图像缩放、平移和镜像。1、图像缩放图像缩放用到的函数是cv2.resize()函数,函数原型如下:resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)OpenCV提供了几种缩放方式:cv2.INTER_AREA、cv2.INTER_CUBIC、cv2.INTER_LI...
2019-11-05 14:14:07 258
原创 Tensorflow加载多幅图像进一个tensor
这里加载多幅图像进一个tensor,我用的还是opencv读取图像的做法,然后这里要介绍Tensor的一个函数Tensor Slice(int64 dim0_start, int64 dim0_limit) const;可以看到它返回的还是一个tensor,参数是一个tensor的切片的起止下标,而且是一个左闭右开的区间,我就是利用这个函数将加载进来的多幅图像塞进去的,并且对获取到的切片...
2019-11-03 22:35:40 761
原创 Cmake构建OpenCV测试例子
适用Cmake的CMakeLists.txt来编译一个OpenCV的测试例子。CMakeLists.txt的写法为:project( main )#添加头文件路径include_directories(/usr/local/opencv347/include /usr/local/opencv347/include/opencv /usr/local/opencv347/inclu...
2019-11-03 21:43:53 651
原创 Linux利用本地http下载解决一些需要联网下载的问题
主要是在Linux下编译一些开发环境的时候会需要联网下载一些依赖库之类的,但是有时候因为网速、QIANG的存在,经常下载不了,如果该库的配置文件里有下载的url之类的,那可以利用这个方法来解决。首先是输入一下命令:sudo apt-get install httpd然后会提示有问题如下:这个时候再根据上面的提示来下载安装对应的配置:sudo apt-get instal...
2019-11-03 20:10:41 646
原创 Python调用OpenCV算术操作
Python调用OpenCV的很多操作都是类似numpy的操作的,这篇内容包括加法操作、图像混合、按位运算。1、加法图像的加法可以用cv2.add()来实现,如果相加后的像素值超过255,则取255,也可以用numpy的+操作,但是+操作的话与add函数不同的地方在于numpy的加法是取模操作,也就是说如果相加之后大于255,那么就会对256取模:importnumpyasnp...
2019-11-02 13:55:06 176
原创 Python调用OpenCV阈值化
这一篇主要有两点:普通阈值化和自适应阈值化。1、普通阈值化普通阈值化用到的函数是cv2.threshold,其函数原型为:threshold(src,thresh,maxval,type,dst=None)其中,type的取值有以下几种cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV、cv2.THRESH_TRUNC、cv2.THRESH...
2019-10-30 13:24:54 582 1
原创 Python调用OpenCV颜色空间
Python调用OpenCV的颜色空间转换函数是cv2.cvtColor(),OpenCV提供了很多中颜色空间转换,这里可以借助一个函数来获取所有的转换标识:flags=[iforiindir(cv2)ifi.startswith('COLOR_')]这个可以得到如下的标识符:['COLOR_BAYER_BG2BGR','COLOR_BAYER_BG2BGRA','...
2019-10-29 08:02:28 663
原创 tensorflow Cpp获取网络每一层的名字
在之前的博客中提到了使用tensorflow的C++接口调用已经训练好的模型pb文件,这一篇简单说下获取图模型每一层的名称,虽然不一定有用。前面就知道在tensorflow的C++接口中,用GraphDef来定义一个图模型的类,然后通过ReadBinaryProto()函数来从pb文件中加载图模型结构,这个时候,模型的每一层在GraphDef中就是一个结点(node),所以有多少层(结点)可以...
2019-10-24 11:29:57 419
原创 Tensorflow Cpp API调用训练好的模型
之前的笔记有一篇完成了对tensorflow的编译,然后简单写了个测试程度,所以,应该是可以用了的,然后上篇简单写了个基于Keras的手写数字识别的的模型需要你连了一下,那么现在就试试用tensorflow的 C++ API调用训练好的模型测试下。这里推荐一个GitHub上找到的项目,用的C++调用tensorflow API的。首先,前面把模型保存为了.h5文件,但是,很遗憾,我查到的资料都...
2019-10-24 11:27:35 1496 1
原创 Python调用OpenCV读显写
OpenCV提供了python的接口,而且很重要的一点是python下的很多接口名与C++的接口名是一样的,这一篇先记录python调用OpenCV去读取图像、显示图像和保存图像。1、OpenCV读取图像cv2.imread与C++下的接口一样,Python下的读图的接口也还是imread():img=cv2.imread("D:\images\lena.jpg",flags=...
2019-10-22 15:06:13 204
tensorflow180 C++ API CPU
2019-02-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人