opencv for Java图像处理

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

2018-09-04  本文已影响22人  侠之大者_7d3f

前言

从事图像处理,计算机视觉编程的对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 插件

图片.png 图片.png

测试

测试代码

#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);
}

代码很简单,注意

测试结果

  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 !

上一篇下一篇

猜你喜欢

热点阅读