摘要: 一些闲话: 前面我有篇博客 https://www.cnblogs.com/riddick/p/10434339.html ,大致说了下如何将pytorch训练的.pth模型转换为mlmodel,部署在IOS端进行前向预测。只是介绍了下类接口,并没有示例,因此有可能会陷入没有demo你说个p的境地。阅读全文
posted @ 2019-04-14 01:38 一度逍遥 阅读(183) 评论(0) 编辑
摘要: 1. 获取已经添加到xcode工程中的某一资源文件 file.txt 的路径 2. 对当前xcode工程开通沙盒权限后,访问存储到手机上的某一资源文件夹sources/file.txt的路径阅读全文
posted @ 2019-04-09 21:11 一度逍遥 阅读(28) 评论(0) 编辑
摘要: Horn–Schunck光流算法[1]是一种全局方法估算光流场。 参考博文:https://blog.csdn.net/hhyh612/article/details/79216021 假设条件: HS算法除了需要满足LK光流前两个假设之外,增加了一个假设条件: 场景中属于同一物体的像素形成光流场向阅读全文
posted @ 2019-03-25 22:37 一度逍遥 阅读(123) 评论(0) 编辑
摘要: Lucas–Kanade光流算法是一种两帧差分的光流估计算法。它由Bruce D. Lucas 和 Takeo Kanade提出 [1]。 LK光流法有三个假设条件: 1. 亮度恒定:一个像素点随着时间的变化,其亮度值(像素灰度值)是恒定不变的。这是光流法的基本设定。所有光流法都必须满足。 2. 小阅读全文
posted @ 2019-03-25 00:22 一度逍遥 阅读(347) 评论(0) 编辑
摘要: UIImage 转 OpenCV cvMat: OpenCV cvMat 转 UIImage :阅读全文
posted @ 2019-03-21 21:14 一度逍遥 阅读(106) 评论(0) 编辑
摘要: pytorch训练出.pth模型如何在MacOS上或者IOS部署,这是个问题。 然而我们有了onnx,同样我们也有了coreML。 ONNX: onnx是一种针对机器学习设计的开放式文件格式,用来存储训练好的模型,并进行多种框架模型间的转换。 coreML: Apple在2017年 MacOS 10阅读全文
posted @ 2019-02-25 22:28 一度逍遥 阅读(544) 评论(0) 编辑
摘要: 环境 Ubuntu -18.04.1, opencv3.4.0 , python 3.6, cmake 3.5.0, pytorch 1.0。 pytorch官网下载对应版本:https://pytorch.org/。 libtorch库的安装参考:https://pytorch.org/cppdo阅读全文
posted @ 2019-01-13 23:56 一度逍遥 阅读(852) 评论(0) 编辑
摘要: 前面两篇博客主要讲了如何从全景图转到小行星、水晶球视图。今天来说下如何从全景图中取一块儿平面视图出来。 当然最简单的是直接从全景图里画一个ROI,然后扣一块儿区域出来。但是很多时候这样的操作并不方便,如果要是截取的区域跨越了拼接缝的话就麻烦了。 一劳永逸的方法当然还是将全景图贴到球面去做,假设观察者阅读全文
posted @ 2019-01-11 23:28 一度逍遥 阅读(735) 评论(1) 编辑
摘要: 前一篇博客中讲到怎么由全景图转到小行星,这次换一种投影方式说下由全景图转到水晶球模式。 首先,还是要有一副全景图,风景秀丽是不是: 1. 将其按照经纬展开法,贴到单位球面上。图像第一行聚集在一起成为球体的北极点;图像的最后一行像素聚集在一起成为球的南极点。 2. 设定投影平面为与南极点相切的平面,观阅读全文
posted @ 2018-11-18 19:52 一度逍遥 阅读(379) 评论(0) 编辑
摘要: 全景图是2:1比例的图片,一般是多张图像拼接而成。全景图2:1的比例可以很方便的映射到球面,而球坐标可以很方便的实现各种有趣的投影。比如小行星,水晶球,局部透视投影等。 今天来说说怎么将全景图投影到小行星视图: 首先,要有一副2:1的全景图,如下: 风景秀丽是不是。 然后,将全景图按照经纬展开法重新阅读全文
posted @ 2018-11-09 23:40 一度逍遥 阅读(948) 评论(0) 编辑
摘要: 现在越来越多的视频或者图像拍摄设备支持log模式,比如大疆无人机的D-Log模式等等,log模式的起源和发展就不多做介绍,其在普通显示器上显示画面通常看起来是平坦的灰色,因此也常被称为log灰视频。 由于其能记录更多的图像细节,动态范围更广,使得后期调色可操作空间更大,所以今天就来说一说怎么用3Dl阅读全文
posted @ 2018-10-16 22:39 一度逍遥 阅读(1684) 评论(2) 编辑
摘要: OpenCV写入静态图片时,imwrite函数第三个参数可以设置压缩率,默认值为95.阅读全文
posted @ 2018-07-31 22:56 一度逍遥 阅读(448) 评论(0) 编辑
摘要: OpenCV3中超像素分割算法SEEDS,SLIC, LSC算法在Contrib包里,需要使用Cmake编译使用。为了方便起见,我将三种算法的源码文件从contrib包里拎了出来,可以直接使用,顺便比较一下算法的效果。 三种算法的源码文件放在我的码云code上:https://gitee.com/r阅读全文
posted @ 2018-05-31 23:15 一度逍遥 阅读(242) 评论(0) 编辑
摘要: 前面有介绍拉普拉斯融合,今天说下OpenCV泊松融合使用。顺便提一下,泊松是拉普拉斯的学生。 泊松融合的原理请参考这篇博文https://blog.csdn.net/u011534057/article/details/68922319,讲的非常详细,此处不再赘述。 OpenCV中集成了泊松融合,A阅读全文
posted @ 2018-05-06 23:15 一度逍遥 阅读(2227) 评论(0) 编辑
摘要: Kmeans聚类算法是十分常用的聚类算法,给定聚类的数目N,Kmeans会自动在样本数据中寻找N个质心,从而将样本数据分为N个类别。下面简要介绍Kmeans聚类原理,并附上自己写的Kmeans聚类算法实现。 一、Kmeans原理 1. 输入:一组数据data,设定需要聚类的类别数目ClusterCn阅读全文
posted @ 2018-05-06 22:15 一度逍遥 阅读(163) 评论(0) 编辑
摘要: 一、拉普拉斯融合基本步骤 1. 两幅图像L,R,以及二值掩模mask,给定金字塔层数level。 2. 分别根据L,R构建其对应的拉普拉斯残差金字塔(层数为level),并保留高斯金字塔下采样最顶端的图像(尺寸最小的图像,第level+1层): 拉普拉斯残差金字塔构建方法如下,以L图为例: (1) 阅读全文
posted @ 2018-04-23 22:43 一度逍遥 阅读(1331) 评论(0) 编辑
摘要: 上一篇博客中介绍了从拍摄图像到获取视差图以及深度图的过程,现在开始介绍利用视差图或者深度图进行虚拟视点的合成。虚拟视点合成是指利用已知的参考相机拍摄的图像合成出参考相机之间的虚拟相机位置拍摄的图像,能够获取更多视角下的图片,在VR中应用前景很大。 视差图可以转换为深度图,深度图也可以转换为视差图。视阅读全文
posted @ 2018-03-07 22:42 一度逍遥 阅读(2531) 评论(4) 编辑
摘要: 双目立体匹配一直是双目视觉的研究热点,双目相机拍摄同一场景的左、右两幅视点图像,运用立体匹配匹配算法获取视差图,进而获取深度图。而深度图的应用范围非常广泛,由于其能够记录场景中物体距离摄像机的距离,可以用以测量、三维重建、以及虚拟视点的合成等。 之前有两篇博客简要讲过OpenCV3.4中的两种立体匹阅读全文
posted @ 2018-02-28 22:54 一度逍遥 阅读(28284) 评论(46) 编辑
摘要: 上一篇博客中讲到了goodFeatureToTrack()这个API函数能够获取图像中的强角点。但是获取的角点坐标是整数,但是通常情况下,角点的真实位置并不一定在整数像素位置,因此为了获取更为精确的角点位置坐标,需要角点坐标达到亚像素(subPixel)精度。 1. 求取亚像素精度的原理 找到一篇讲阅读全文
posted @ 2018-02-26 22:50 一度逍遥 阅读(2791) 评论(0) 编辑
摘要: 上面一篇博客分析了HARRIS和ShiTomasi角点检测的源代码。而为了提取更准确的角点,OpenCV中提供了goodFeaturesToTrack()这个API函数,来获取更加准确的角点位置。这篇博客主要分析goodFeaturesToTrack()的源代码。 函数原型如下: _image为输入阅读全文
posted @ 2018-02-25 19:49 一度逍遥 阅读(1100) 评论(0) 编辑
摘要: OpenCV中常用的角点检测为Harris角点和ShiTomasi角点。 以OpenCV源代码文件 .\opencv\sources\samples\cpp\tutorial_code\TrackingMotion\cornerDetector_Demo.cpp为例,主要分析其中的这两种角点检测源代阅读全文
posted @ 2018-02-23 22:50 一度逍遥 阅读(1067) 评论(1) 编辑
摘要: 引导图滤波器是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献《Guided Image Filtering》以及matlab源码:http://kaiminghe.com/eccv10/index.html。这里只说一下自适应权重原理、C++实现灰度图像以及彩阅读全文
posted @ 2018-01-28 21:51 一度逍遥 阅读(4139) 评论(2) 编辑
摘要: 以OpenCV自带的Aloe图像对为例: 1.BM算法(Block Matching) 参数设置如下: 效果如下: BM算法得到的视差图(左),空洞填充后得到的视差图(右) 2.SGBM(Semi-Global Block matching)算法: 参数设置如下: 效果如图: SGBM算法得到的视差阅读全文
posted @ 2018-01-19 21:56 一度逍遥 阅读(9518) 评论(1) 编辑
摘要: 文件重命名: 文件移动(剪切): 文件复制: 获取文件夹下特定格式的所有文件的文件名: //获取所有的文件名 void GetAllFiles(string path, vector<string>& files) { long hFile = 0; //文件信息 struct _finddata_阅读全文
posted @ 2018-01-14 22:04 一度逍遥 阅读(146) 评论(0) 编辑
摘要: 原理: Two-Pass方法检测连通域的原理可参见这篇博客:http://blog.csdn.net/lichengyu/article/details/13986521。 参考下面动图,一目了然。 代码: 代码中标记图的数据类型要注意,如果first pass中标记数多于255,就不要用uchar阅读全文
posted @ 2018-01-13 23:36 一度逍遥 阅读(683) 评论(0) 编辑
摘要: CUDA共享内存使用示例如下:参考教材《GPU高性能编程CUDA实战》。P54-P65 教材下载地址:http://download.csdn.net/download/yizhaoyanbo/10150300。如果没有下载分可以评论区留下邮箱,我发你。 我的博客即将同步至腾讯云+社区,邀请大家一同阅读全文
posted @ 2017-12-07 22:23 一度逍遥 阅读(1191) 评论(0) 编辑
摘要: 中值滤波能够有效去除图像中的异常点,具有去除图像噪声的作用。传统中值滤波的算法一般都是在图像中建立窗口,然后对窗口内的所有像素值进行排序,选择排序后的中间值作为窗口中心像素滤波后的值。由于这个做法在每个像素点处都要建立窗口并排序,非常耗时,尤其是有大量的冗余计算。如下图: 黄色区域+中间粉色区域是第阅读全文
posted @ 2017-12-05 22:42 一度逍遥 阅读(3049) 评论(4) 编辑
摘要: CUDA纹理内存的访问速度比全局内存要快,因此处理图像数据时,使用纹理内存是一个提升性能的好方法。 贴一段自己写的简单的实现两幅图像加权和的代码,使用纹理内存实现。 输入:两幅图 lena, moon 输出:两幅图像加权和阅读全文
posted @ 2017-11-24 22:56 一度逍遥 阅读(1534) 评论(0) 编辑
摘要: CUDA用于并行计算非常方便,但是GPU与CPU之间的交互,比如传递参数等相对麻烦一些。在写CUDA核函数的时候形参往往会有很多个,动辄达到10-20个,如果能够在CPU中提前把数据组织好,比如使用二维数组,这样能够省去很多参数,在核函数中可以使用二维数组那样去取数据简化代码结构。当然使用二维数据会阅读全文
posted @ 2017-11-12 13:16 一度逍遥 阅读(945) 评论(0) 编辑
摘要: 图像算法中会经常用到摄像机的畸变校正,有必要总结分析OpenCV中畸变校正方法,其中包括普通针孔相机模型和鱼眼相机模型fisheye两种畸变校正方法。 普通相机模型畸变校正函数针对OpenCV中的cv::initUndistortRectifyMap(),鱼眼相机模型畸变校正函数对应OpenCV中的阅读全文
posted @ 2017-11-09 22:49 一度逍遥 阅读(6000) 评论(0) 编辑
摘要: libJPEG库是用于编码数据为JPEG格式或者解码JPEG格式图片的常用库,OpenCV读取图像底层实现就是利用libJPEG库,而libJPEG-turbo则效率更高。 具体怎么编译编译libJPEG库源码得到lib库的方法很容易搜到,不多做介绍。 下面的代码包含了该库中常用的API用法,包括读阅读全文
posted @ 2017-11-01 22:33 一度逍遥 阅读(4363) 评论(0) 编辑
摘要: ffmpeg实现视频转码命令行,result需要提前建好作为保存转码后的视频路径: 当有大量视频需要转码时,可以使用如下命令行工具批量处理: 也可以写一个脚本放到待转码视频的目录中,脚本代码如下,变量v前面比命令行多一个“%”:阅读全文
posted @ 2017-10-27 17:49 一度逍遥 阅读(4242) 评论(0) 编辑
摘要: NV12格式是yuv420格式的一种,NV12格式的u,v排布顺序为交错排布,假如一幅图像尺寸为W*H,则先Y分量有W*H个,然后U分量和V分量交错排布,U分量和V分量各有W*H/4个,U,V加起来总数是Y分量的一半。 NV12内存YUV分量排布如下所示: 下面是CUDA实现的NV12格式到BGR格阅读全文
posted @ 2017-10-24 22:51 一度逍遥 阅读(2631) 评论(3) 编辑
摘要: FFmpeg中AVFrame到OpenCV中Mat的两种转换方法 方法一:查表法 子函数YUV2RGB( )实现yuv420p到RGB的转换 方法二、逐像素转换法: 子函数Yuv420p2Rgb32( )函数实现yuv420p到RGB32的转换阅读全文
posted @ 2017-10-23 22:05 一度逍遥 阅读(1309) 评论(0) 编辑
摘要: ffmpeg实现音视频编解码是非常常用的工具,视频解码出来的raw数据是yuv格式,用来进行后续的图像处理一般是RGB格式的。所以需要从yuv到rgb或者bgr的转换,ffmpeg提供了相应的转换API函数: 下面代码中dec_ctx是解码器上下文,AV_PIX_FMT_BGR24是要转换成的图像数阅读全文
posted @ 2017-10-23 21:56 一度逍遥 阅读(2160) 评论(0) 编辑
摘要: 鼠标的滑轮事件实现图像的缩放很方便,具体在回调函数中如下写: 其中scale可以在外部定义为全局变量,通过响应CV_EVENT_MOUSEWHEEL滑轮事件获取Scale的具体值。 获取Scale值需要关注两个问题,滑轮滑动的方向和滑动量的大小。滑动方向通过getMouseWheelDelta(fl阅读全文
posted @ 2017-10-19 22:48 一度逍遥 阅读(1010) 评论(0) 编辑
摘要: 看到一篇从数学意义上讲解Harris角点检测很透彻的文章,转载自:http://blog.csdn.net/newthinker_wei/article/details/45603583 主要参考了:http://blog.csdn.net/yudingjun0611/article/details阅读全文
posted @ 2017-10-10 15:32 一度逍遥 阅读(10570) 评论(0) 编辑
摘要: 没想到我2010年买的笔记本显卡GT330M 竟然还能跑CUDA,果断小试了一把,环境为CUDA6.5+VS2012,写了一个积分图实现均值滤波。类似于OpenCV的blur()函数。 使用lena.jpg做测试,效果如下: 代码在此: #include "cuda_runtime.h" #incl阅读全文
posted @ 2017-09-22 21:43 一度逍遥 阅读(923) 评论(3) 编辑
摘要: OpenCV保存PNG图像底层调用的就是libpng库,简要说一下libPNG库的单独使用。 1.首先需要下载两个库,一个是libpng,一个是zlib libpng库下载地址:http://www.libpng.org/pub/png/libpng.html zlib库下载地址:http://ww阅读全文
posted @ 2017-09-12 22:40 一度逍遥 阅读(2197) 评论(0) 编辑
摘要: 鱼眼图像由视场角接近180度甚至大于180度的镜头拍摄得到,图像周围畸变严重,通过经纬法将鱼眼图像展开是一个不错的方法。鱼眼镜头可以视为一个半球,经纬法按照球面贴图的类似思想将图像以球面形式展开。 以下面这幅鱼眼图像为例: 视场角假设为180度,如果按照球的北极点(南极点)为图像的中心,展开后会是这阅读全文
posted @ 2017-09-07 22:25 一度逍遥 阅读(1543) 评论(0) 编辑