Image Watch支持自定义的图像类型

Image Watch插件是为了满足OpenCV可视化图像处理调试而开发的插件,天然的支持OpenCV各种图像类型。如果我们要支持自己的图像类型在Image Watch中显示,那么应该怎么做呢?
有两种方法可以使用 Image Watch 来显示自己的图像,一是使用Image Watch自带的显示内存操作,使用@mem(img_ptr,type,width,height,stride) 来显示,二是使用Image Watch的类型拓展,加入自己的类型的配置文件即可。

阅读更多Image Watch支持自定义的图像类型

在jupyter中使用imshow显示opencv图像

jupyter中用cv2.imshow打开窗口进行显示后不能点击关闭按钮,否则消息处理机制会导致python挂掉。那么只有用matplotlib来画了,由于numpy和opencv的rgb通道排列是反的,所以做一个转化就可以了,粘贴下面代码里的函数,直接调用就好。

阅读更多在jupyter中使用imshow显示opencv图像

YOLO_V3从训练到部署

darknet是一个C语言实现的深度学习框架,几乎不依赖任何库,安装编译都很方便,训练好的模型可以直接在opencv上部署,堪称业界良心。这篇博客主要包含目标检测数据标注和预处理、yolo_v3代码编译、模型训练、在opencv上部署,都是简要的笔记。

阅读更多YOLO_V3从训练到部署

Matlab调用OpenCV的三种方式

Matlab本身有着出色的图像算法分析工具,但有时我们出于速度和开发的需要,在matlab中调用opencv辅助处理,那么如何在matlab中调用opencv呢?这篇博客介绍三种方式:Matlab嵌入C++,使用mexOpenCV第三方工具,使用Matlab官方提供的Computer Vision Toolbox中的OpenCVInterface。

阅读更多Matlab调用OpenCV的三种方式

优雅的用Lua调用OpenCV

说起脚本语言调用opencv,我们通常会想到python。如果说要在更小的系统中使用脚本语言,我们会想到lua。如果说用lua进行图像处理,我们肯定会想到大名鼎鼎的torch。torch中的image模块重写了opencv,封装了lua接口,但是如果我们不想修改opencv如此庞大的源码,又想像python调用opencv那样简单直接,那应该怎么做呢?

在正式开始介绍之前,想展示一段简答的代码,来告诉大家即将要做的事情是什么。(也是假人以渔了^_^)

阅读更多优雅的用Lua调用OpenCV

进程间通信(内存映射)方式传输CV::Mat图像数据

关于内存映射的进程间通信,我直接一篇博客已经详细介绍过,这里只是再次补充一个传输图像的应用,因为OpenCV中Mat格式较为常用(并且也很方便传输),刚好用到,就做个笔记好了。应用的场景是B进程中的Mat传给A进程,A进程接受并恢复为Mat格式。其它也没什么好说的,有细节为题就参见我之前的博客,那么开始吧。

阅读更多进程间通信(内存映射)方式传输CV::Mat图像数据

OpenCV特征点提取算法对比

除了我们熟知的SIFT、SURF、ORB等特征点提取算法,OpenCV中还提供了十余种特征点提取算法。最近在整理以往的ppt和报告,看到其中一页ppt,发现已经忘得差不多了,就再写篇博客复习下好了,这篇博客注重对比,技术方面的内容不会太过细致,希望能有帮助。当然,文章末尾会提供这些算法OpenCV调用的实例代码。
首先,引发内容的就是下面这张ppt:(不要注意Why Surf了,当时根据具体应用场景所做的选择)左边一栏是特征点的数目,右边一栏是检测的速度,数据是在博主自己的测试集(大概四五百张图片)上测试的。

阅读更多OpenCV特征点提取算法对比

OpenCV实现Census变换

census        在立体视觉中,常常用到Census变换,Census变换是一种非参数局部变换,其将周围像素的强度映射到一个比特穿,从而捕获图像的结构。同时使用Census变换可以减少由相机增益和偏置引起变化的影响。在立体匹配过程中,将图像做Census变换后,计算像素点之间的明式距离进行匹配,可以得到较好的效果。

        这篇博客主要介绍介绍实现Census变换,由于使用OpenCV的容器和接口,所以直接使用OpenCV调用比较方便。

阅读更多OpenCV实现Census变换

OpenCV进行各种矩阵变换及变换参数求解

        OpenCV可以处理许多2D、3D的变换矩阵,包括但不局限于2D放射变换矩阵(2×3),二维点对的最优单映射变换矩阵H(3×3),四个二维点对之间的透射变换矩阵(3×3),多对三维点之间的旋转平移矩阵(3×4),计算多个点对之间的基矩阵和位姿变换矩阵等。这篇博客对这些变换函数进行了总结,可以通过该博客给出的名字搜索函数进行查询。

阅读更多OpenCV进行各种矩阵变换及变换参数求解

使用Kinect2.0+OpenCV采集RGB图像

knt3        博主最近开始玩Kinect了!

        这篇博客主要介绍Kinect2.0的开发环境配置,主要两点内容,一是在VS2013上配置Kinect2.0开发环境,二是编译一个采集RGB图像数据的小程序测试Kinect2.0的开发环境是否配好。

        在你需要做好如下准备之后,就可以开始配置Kinect2.0的开发环境了。

        首先检查你的PC,要求操作系统为Win8及以上(含Win8、Win8.1、Win10),拥有USB3.0(及以上)接口,如果你需要使用Kinect做实时三维重建及交互,那么你最好拥有一块中档(及以上)显卡,并且支持DirectX11(及以上)。

        另外关于软件,本篇教程已经默认你配置了以下环境VS2012(及以上版本),OpenCV(2.4及以上,最好是3.1版本),配置好这些,我们就可以开始了。

阅读更多使用Kinect2.0+OpenCV采集RGB图像

Windows下多个库的快速配置——opencv/ boost/opengl/glew/freeglut/glog/protobuf

        点击下载,解压好之后只有一个usr目录,其中包含了opencv、opengl、glew、freeglut、glog、protobuf等,你只需要经过下列三个步骤,就可以一次性永久配置好环境,当然,如果你对库原本就有一些理解,那你应该马上就懂了,如果你常在Linux上配置环境,那你会发现我做的事情其实很简单,就是把各个库集中起来,有点类似于linux中库的安装方法,因此配置变得非常便捷了,博主采用全静态编译,在使用时只需要注意使用静态库就可以了。让我们开始吧。

阅读更多Windows下多个库的快速配置——opencv/ boost/opengl/glew/freeglut/glog/protobuf