美文网首页opencv for Java图像处理
opencv for java之——opencv调试利器Imag

opencv for java之——opencv调试利器Imag

作者: 侠之大者_7d3f | 来源:发表于2018-09-04 17:09 被阅读22次

前言

从事图像处理,计算机视觉编程的对opencv一定很熟悉,opencv就不用介绍了,opencv源码采用C++编写,底层为了加速还使用了CUDA C++,并行加速语言opencl。 一般使用C++的开发opencv大多使用宇宙第一IDE——Visual Studio (windows), Linux上使用Clion,Qt等。笔者今天介绍一个基于windows+visual studio下的opencv调试神奇——Image watch插件。

目前Image watch还没有Java版本的,欢迎各路大神开发插件


开发环境


介绍

Image watch 插件

  • 下载地址
    在微软官网即可下载,没必要买积分在csdn下载哦。 下载链接在上面已经贴出来了。

    图片.png
  • 用途
    可以在调试过程中查看opencv中Mat对象的内容,可视化功能强大。 最新的Image watch插件还可以查看 cv::Mat_<>,CvMat,_lplImage对象的内容。
    注意:使用opencv dnn深度学习使用,Mat blobMat = blobFromImage(Image), 这个Mat对象是4维的张量,是不能直接用这个插件看内容的

图片.png
  • 注意事项
    安装之前,请查看自己visual Studio的具体版本信息。有的版本的vs可能出问题,别慌。


    图片.png
图片.png

测试

  • 配置好opencv(版本大于3.2.0)
  • 准备2张图像,一个灰度图像,一个rgb彩色图像

测试代码

#include<iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/dnn.hpp>

using std::cout;

using cv::String;
using cv::Mat;
using cv::Mat_;
using cv::imread;
using cv::ImreadModes;
using cv::imshow;
using cv::waitKey;
using cv::dnn::blobFromImage;

int main() {

    //灰度图
    Mat var1 = imread("F:\\lena\\lena_gray.jpg", ImreadModes::IMREAD_GRAYSCALE);

    //BGR三通道
    Mat var2 = imread("F:\\lena\\lena_rgb.jpg", ImreadModes::IMREAD_COLOR);

    //单通道float
    Mat_<float> var3 = imread("F:\\lena\\lena_gray.jpg", ImreadModes::IMREAD_GRAYSCALE);

    //4D张量
    Mat var4 = blobFromImage(var2);

    cout << "测试opencv Image watch插件";
    waitKey(0);
}

代码很简单,注意

  • ImreadModes是一个枚举,IMREAD_GRAYSCALE说明读取灰度图像。IMREAD_COLOR为彩色图像(BGR顺序)。
  • Mat_<float>是一个模板类,数据为浮点类型。
  • blobFromImage()函数是cv::dnn中的函数。返回的Mat是4维张量(NCHW)。

测试结果

  1. 首先,Image watch插件是在 视图->其他窗口中。可以将插件固定在vs上,也可悬浮。

    图片.png
  2. 需要在加端点的时候调试


    图片.png
  3. 灰度图像的可视化


    图片.png
  4. 鼠标滚轮可以放大缩小,查看具体像素的值


    图片.png
  5. BGR彩色图像可视化


    图片.png

注意,BGR顺序


图片.png
  1. 浮点类型Mat可视化


    图片.png
  2. 4维张量可视化
    Image watch是无法直接可视化4D的高维矩阵的

    图片.png

深入了解一个4维张量
Mat对象中,有一个成员变量(属性)size, 类型是MatSize,MatSize是一个结构体,包含一个指针p用于存储张量在各个维度的大小

图片.png 图片.png

无法直接看到4维张量在不同维度的大小,显示1x-1x-1。为此我们只能查看内存。


鼠标点击右键,快速监视

图片.png

输入要查看的变量,以及个数。这里我们看出p指针的4个单元,发现是 1,3,512,512。 也就是说张量为1x3x512x512


图片.png

End

本次笔者主要探索了Image watch插件的功能,以及了解深度学习dnn的4维张量。 感谢甜心对我的支持,fighting !

相关文章

网友评论

    本文标题:opencv for java之——opencv调试利器Imag

    本文链接:https://www.haomeiwen.com/subject/qtagwftx.html