[转]OpenCV中的Image Watch,VisualStudio像matlab一样方便查看图像Mat像素值等

一直以来,很多时候都是用Matlab来进行图像处理和算法研究,主要是觉得其可以方便的查看图像、像素点等等(本人是菜鸟,如果是高手可以快速用C语言实现的请指导),所以一直以来都是matlab来写算法,不过这样写有个大麻烦就是转化成工程代码还得再次写C/C++,离工程应用总觉得差那么一步。最近刚好看到这个VS2012以后的插件Image Watch可以代替部分matlab里面显示图像信息很方便的功能,很受用。

这位仁兄是发现这个功能比较早的:http://www.cnblogs.com/liu-jun/p/3161654.html

基本功能都介绍的很详细,几个链接如下:插件的下载链接:https://visualstudiogallery.msdn.microsoft.com/e682d542-7ef3-402c-b857-bbfba714f78d

opencv对插件的介绍:http://opencv.org/image-debugger-plug-in-for-visual-studio.html

详细的介绍文档:http://docs.opencv.org/2.4/doc/tutorials/introduction/windows_visual_studio_image_watch/windows_visual_studio_image_watch.html#windows-visual-studio-image-watch

研发团队对该插件的详细介绍:http://research.microsoft.com/en-us/um/redmond/groups/ivm/imagewatchhelp/imagewatchhelp.htm#_Toc351981444

下面以官网上的代码进行简介:

// Test application for the Visual Studio Image Watch Debugger extension

#include <iostream>                        // std::cout
#include <opencv2/core/core.hpp>           // cv::Mat
#include <opencv2/highgui/highgui.hpp>     // cv::imread()
#include <opencv2/imgproc/imgproc.hpp>     // cv::Canny()

using namespace std;
using namespace cv;

void help()
{
    cout
        << "----------------------------------------------------" << endl
        << "This is a test program for the Image Watch Debugger " << endl
        << "plug-in for Visual Studio. The program loads an     " << endl
        << "image from a file and runs the Canny edge detector. " << endl
        << "No output is displayed or written to disk."
        << endl
        << "Usage:"                                               << endl
        << "image-watch-demo inputimage"                          << endl
        << "----------------------------------------------------" << endl
        << endl;
}

int main(int argc, char *argv[])
{
    help();

    if (argc != 2)
    {
        cout << "Wrong number of parameters" << endl;
        return -1;
    }

    cout << "Loading input image: " << argv[1] << endl;
    Mat input;
    input = imread(argv[1], CV_LOAD_IMAGE_COLOR);

    cout << "Detecting edges in input image" << endl;
    Mat edges;
    Canny(input, edges, 10, 100);

    return 0;
}

该代码是一个简单的图片读入,然后进行边缘处理的代码,根据该代码,进行图片显示的步骤如下:

1.采用debug模式进行编译,设置一个断点

Enjoy it! 1

2.查看debug模式下哪些变量是可见的:Debug ? Windows ? Locals

3. 查看debug模式下哪些变量是可见的

Enjoy it! 2

4.在运行debug模式下,运行到断点处的时候,可以打开image watch插件进行查看:View ? Other Windows ? Image Watch

Enjoy it! 3

这个时候可以清楚的在Image watch窗口里面看到所有的图像Mat,然后点击就可以显示每个图像了,在图像显示区域G进行显示。这个插件做的比较好的就是,可以实时显示鼠标的坐标(H区域)和像素值,还可以通过鼠标滚轮进行放大缩小等,详细的可以参考链接介绍。

Enjoy it! 4

至此,基本的类似Matlab显示图像和查看像素值等功能已经完成,除了这个之后,该插件还有一些很厉害的功能,在图片区域点击鼠标右键可以看到这些功能

Enjoy it! 5

主要是Link views这个功能比较强大,它可以在原始图像上选择一块区域,然后设置好,再点击后续的mat,就可以看到其他图像在设置区域内的变化,这个很强大!可以实时查看局部区域图像处理的结果。

其他的功能还有缩小和放大等,基本和matlab差不多,可以放大到像素级的,然后通过Link views查看局部的像素值随着算法运行而改变的情况等等。

Enjoy it! 6

差不多这些处理步骤在基本的图像算法里面就够用了,基本可以替代matlab的一些图像显示的功能了,当然还有更多的功能,请参见http://research.microsoft.com/en-us/um/redmond/groups/ivm/imagewatchhelp/imagewatchhelp.htm

Tags:opencv   matlab   imagewatch   插件   图像显示   matlab   opencv

原文地址:http://www.itdadao.com/articles/c15a310690p0.html

分享链接:http://xn--qrqa955a.xn--fiqs8s/?p=1554
除非另有声明,本网站采用知识共享“署名-非商业性使用-相同方式共享 (by-nc-sa) 3.0 中国大陆”许可协议授权。

[转]Win10 下Cmake编译配置 Opencv3.1 + Cuda7.5 + VS2013

作者:Fienly http://www.cnblogs.com/asmer-stone/p/5530868.html

折腾了三天终于配置成功了,在此写下编译配置的全部步骤和遇到的很多坑。

整体介绍:

OpenCV 中 CUDA 实现的函数还不是太多,使用前要在OpenCV的官网上确认以下你想要的功能是否已经实现,否则费了老鼻子劲配个环境不能用,太浪费时间了。

编译的时候要编译Release 和Debug 两个版本,我的电脑 i5-4460 3.20GHz ,每个版本大概需要两个半小时左右,电脑配置不一样时间也会有些不同。编译完成之后整个文件夹19.7G(MD,这么大,吓死宝宝了~)。

Enjoy it! 1

环境:

Windows10 专业版 64位

Virtual Stadio 2013

Opencv 3.1

Cuda 7.5

Cmake 3.4.3

 

安装步骤:

0、安装前准备的内容:

安装TBB

自行去官网下载,下载后的文件,解压放在C:\Program Files(可以放在任意目录,是后边环境变量设置的时候对应调整一下即可),目录下:

Enjoy it! 2

然后设置环境变量:在系统-> 高级系统设置->环境变量->path 后边加入下边地址:

C:\Program Files\tbb44_20160413oss\bin\intel64\vc12 (这里注意选择对应的32位 或者64 位和对应的VS版本,Virtual Studio2010 对应vc10, Virtual Studio 2011 对应vc11, Virtual Studio 2013 对应 vc12. Virtual Studio 2015 对应 vc14).

安装CUDA:

自行去官网下载,然后按照默认的安装就行,路径最好不要动,省得配置的时候再有麻烦。

开始编译之前之前建议先阅读一下写在后边的我编译过程中遇到的几个大坑的问题,可能会让你少走很多弯路

1、新建一个文件夹,并把下好的Openv3.1 和 contrib 的源码都放进去(源码在github上自行下载,地址在opencv.org上找)。

Enjoy it! 3

 

2、打开Cmake(自行下载,一定要用3.4.3的,不要用最新的),设置源码路径和目标路径(我的目标路径是:D:\opencv310_CUDA),点击Configure。

PS:第一次Configure的时候由于需要下载一些文件,可能时间会久一点。

 

Enjoy it! 4

这时会让你选择环境,对应选择就可以。我的是VS 2013,所以选了上边的配置。然后点击 Finish。

Enjoy it! 5

 

说明:Cmake中红色的部分说明还没有更新,需要点击Configure更新,每次更改完一些配置或者参数之后都要点击Configure更新一下。最后确定配置无误了再点Generate,将会在你的目标文件夹中生成项目文件。

 

3、这里Cmake里边需要先配置点东西:

把下边的

WITH_TBB

WITH_CUDA

都勾选上,其他的项可以暂时不管。

PS:这里边有一个BUILD_opencv_world的选项,网上有人建议不要选,我就没有选,说是会出问题的几率比较大,而且选了这个选项之后,所有的文件都会被编译到一个dll里边去,大家还记得,在OpenCV官网上下的直接可以在Windows上可以用的OpenCV么,那个里边就是一个opencv_world310.dll,把所有的类、函数什么的都放到这个里边去了,这样的坏处就是,很多你的程序中用不上的东西也都给你放进去了。

然后点Configure

Enjoy it! 6

这时,会让你选择TBB的路径,对应填写好就行,我的是:C:\Program Files\tbb44_20160413oss\include

然后再次Configure, 如下图:

Enjoy it! 7

 

这次又会有关于TBB的两个红色的,这个是Cmake已经自己找到的路径,你看一眼,没什么问题就再一次Configure。

这次就不会有红色的了,确认一下没什么需要再配置的了,就直接Generate。

 

等着Generate完成,你就可以去目标文件夹去看生成的结果了。

 

4、在你的目标文件中找到OpenCV.sln 文件,并用VS打开:

我的目标文件夹是D:opencv310_CUDA

Enjoy it! 8

 

5、打开之后,大概长这样

Enjoy it! 9

然后在,CMakeTargets下的INSTALL上右键->生成。(生成之前建议先阅读一下写在后边的我编过程中遇到的几个大坑的问题,可能会让你少走很多弯路

然后就慢慢的等待吧,等着编译完成就OK了。

 

6、编译完成之后,你会在你的目标文件夹中找到一个install文件夹,里边就有Debug和Release的各种你需要的东西。

install文件夹大概长这样:

Enjoy it! 10

是不是有一种很亲切的感觉。

然后就是配置环境变量,配置VS还有用程序测试了。这个写在最后,继续往下翻。

 

——————————————————-

先说几个大坑,要特别注意,不然会浪费掉很多时间:

——————————————————-

1、要特别注意,Cmake的版本不要用最新的3.5,一定要用3.4.3,不然会出现很多问题,比如说:

无法打开输入文件“..\..\lib\Release\opencv_bioinspired310.lib”

之类的错误。

刚开始最头疼的就是OpenCV的 bioinspired(和医学,生物图像处理相关的一些功能) 这个库编译不出来,想着反正这个库也不用上,就在Cmake的时候不选他,但是如果不选,就会出现其他的一些文件找不到之类的问题。最后换了Cmake3.4.3之后一切正常。估计是Opencv或者是CUDA没有针对最新的Cmake修改。

2、Cmake完成之后,不要全部编译,这样如果到后边出问题了,前边编译了很长时间就浪费了。编译之前先选几个比较容易出问题的项目编译一下试试,比如:opencv_core, opencv_bioinspired, opencv_cudaarithm, opencv_cudabgsegm.尤其是opencv_cudaarithm, opencv_cudabgsegm这两个项目,编译起来非常慢而且最容易出问题。编译方法,在项目上 右键->生成。

Enjoy it! 11

3、如果全部编译完毕之后,如果有一两个项目没有编译成功,没必要再全部重新编译,直接在Cmake编译的目录里的modules目录里找到失败的类,进去用VS打开是项目,重新编译一下即可。

比如,我的opencv_cudabgsegm 项目最后编译失败,我就在D:\opencv310_CUDA\modules\ 下找到 cudabgsegm,进入目录双击 INSTALL.vcxproj ,用VS打开项目。然后生成一次(如下图,在CmakeTargets下的INSTALL上右键->生成),就可以在install文件夹里找到之前失败的lib文件了。

Enjoy it! 12

 

 

配置编译好的OpenCV:

1、配置环境变量:

在Path中添加: D:\opencv310_CUDA\install\x64\vc12\bin;

(其实我在用户的环境变量中也加了一条,不过貌似加不加都行)

配置完环境变量,重启或注销才能生效

 

2、配置VS的项目属性:

新建一个控制台应用程序,然后在项目名称上右键->属性:

Enjoy it! 13

然后:

路径以你的电脑实际为准

注意配置平台信息32位 还是64位,还有Release和Debug

VC++目录  下的:

包含目录 添加以下内容:

D:\opencv310_CUDA\install\include

D:\opencv310_CUDA\install\include\opencv

D:\opencv310_CUDA\install\include\opencv2

库目录 添加以下内容:

D:\opencv310_CUDA\install\build\x64\vc12\lib

 

在链接器 下的:

输入->附加依赖项 添加(注意发布版本不一样,Debug版的带“d”, Release版的不带):

Enjoy it! 14
(Release版)
opencv_aruco310.lib
opencv_bgsegm310.lib
opencv_bioinspired310.lib
opencv_calib3d310.lib
opencv_ccalib310.lib
opencv_core310.lib
opencv_cudaarithm310.lib
opencv_cudabgsegm310.lib
opencv_cudacodec310.lib
opencv_cudafeatures2d310.lib
opencv_cudafilters310.lib
opencv_cudaimgproc310.lib
opencv_cudalegacy310.lib
opencv_cudaobjdetect310.lib
opencv_cudaoptflow310.lib
opencv_cudastereo310.lib
opencv_cudawarping310.lib
opencv_cudev310.lib
opencv_datasets310.lib
opencv_dnn310.lib
opencv_dpm310.lib
opencv_face310.lib
opencv_features2d310.lib
opencv_flann310.lib
opencv_fuzzy310.lib
opencv_highgui310.lib
opencv_imgcodecs310.lib
opencv_imgproc310.lib
opencv_line_descriptor310.lib
opencv_ml310.lib
opencv_objdetect310.lib
opencv_optflow310.lib
opencv_photo310.lib
opencv_plot310.lib
opencv_reg310.lib
opencv_rgbd310.lib
opencv_saliency310.lib
opencv_shape310.lib
opencv_stereo310.lib
opencv_stitching310.lib
opencv_structured_light310.lib
opencv_superres310.lib
opencv_surface_matching310.lib
opencv_text310.lib
opencv_tracking310.lib
opencv_ts310.lib
opencv_video310.lib
opencv_videoio310.lib
opencv_videostab310.lib
opencv_xfeatures2d310.lib
opencv_ximgproc310.lib
opencv_xobjdetect310.lib
opencv_xphoto310.lib


(Debug 版)
opencv_aruco310d.lib
opencv_bgsegm310d.lib
opencv_bioinspired310d.lib
opencv_calib3d310d.lib
opencv_ccalib310d.lib
opencv_core310d.lib
opencv_cudaarithm310d.lib
opencv_cudabgsegm310d.lib
opencv_cudacodec310d.lib
opencv_cudafeatures2d310d.lib
opencv_cudafilters310d.lib
opencv_cudaimgproc310d.lib
opencv_cudalegacy310d.lib
opencv_cudaobjdetect310d.lib
opencv_cudaoptflow310d.lib
opencv_cudastereo310d.lib
opencv_cudawarping310d.lib
opencv_cudev310d.lib
opencv_datasets310d.lib
opencv_dnn310d.lib
opencv_dpm310d.lib
opencv_face310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_fuzzy310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_line_descriptor310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_optflow310d.lib
opencv_photo310d.lib
opencv_plot310d.lib
opencv_reg310d.lib
opencv_rgbd310d.lib
opencv_saliency310d.lib
opencv_shape310d.lib
opencv_stereo310d.lib
opencv_stitching310d.lib
opencv_structured_light310d.lib
opencv_superres310d.lib
opencv_surface_matching310d.lib
opencv_text310d.lib
opencv_tracking310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
opencv_xfeatures2d310d.lib
opencv_ximgproc310d.lib
opencv_xobjdetect310d.lib
opencv_xphoto310d.lib


PS:这些文件是我用python写的脚本生成出来的,不要一个一个从lib文件夹里把名字里拷出来,容易出错,而且工作量挺大。一共106个,各53个。
Enjoy it! 15

 

测试:

把opencv源码中的例子拿出来测试:

代码在: opencv-master\samples\cpp\tutorial_code\gpu\gpu-basics-similarity\gpu-basics-similarity.cpp

把代码拷到刚才建的那个VS项目里,然后生成。

注意:这里不能直接运行,这个程序要接受参数才能运行。

 

打开command终端, 进入编译出来的文件存放的目录,再拷两张图片到这个路径,然后用一下命令运行:

OpenCV_CUDAtest.exe left.jpg right.jpg 10

Enjoy it! 16

TMD这个结果显示,我的CUDA的计算速度比CPU的还慢,好像有点坑爹啊。

 

写在最后:据我了解,CUDA并不是一定就会比纯CUP快的,GUP更擅长处理大规模的并行计算,不擅长逻辑运算,而且在OpenCV中,要想用GPU处理,就必须先把数据转换成GPU可以处理的数据类型,然后再传输到GPU中处理,其中数据传输只能通过系统总线,速度会很慢。因此在选择CUDA的时候要慎重考虑,并不是所有的程序都适合CUDA的,说不定有的程序用了CUDA反而更慢了。估计也就是这个原因,网上Opencv + CUDA的资料才会比较少吧。

要详细了解CUDA原理以及优劣势,请自己查找更详细的资料。

 

Reference:

http://www.nmtree.net/2014/03/19/windows_build-opencv-with-cmake-and-vs2013.html

http://blog.csdn.net/xizero00/article/details/50823020

blog.csdn.net/kelvin_yan/article/details/48708227

http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html

http://blog.csdn.net/Kelvin_Yan/article/details/38866795

分享链接:http://xn--qrqa955a.xn--fiqs8s/?p=1529
除非另有声明,本网站采用知识共享“署名-非商业性使用-相同方式共享 (by-nc-sa) 3.0 中国大陆”许可协议授权。

UFW防火墙简单设置

ufw是一个主机端的iptables类防火墙配置工具,比较容易上手。一般桌面应用使用ufw已经可以满足要求了

安装方法

 sudo apt-get install ufw

当然,这是有图形界面的(比较简陋),在新立得里搜索gufw试试……

使用方法

1 启用

 sudo ufw enable
 sudo ufw default deny 

作用:开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)。

2 关闭

 sudo ufw disable 

2 查看防火墙状态

 sudo ufw status 

3 开启/禁用相应端口或服务举例

 sudo ufw allow 80 允许外部访问80端口
 sudo ufw delete allow 80 禁止外部访问80 端口
 sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口
 sudo ufw deny smtp 禁止外部访问smtp服务
 sudo ufw delete allow smtp 删除上面建立的某条规则
 sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口
 可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16

推荐设置

 sudo apt-get install ufw
 sudo ufw enable
 sudo ufw default deny 

这样设置已经很安全,如果有特殊需要,可以使用sudo ufw allow开启相应服务。

参考:http://wiki.ubuntu.org.cn/Ufw%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97

转载请注明来源:台佳佳.中国 » UFW防火墙简单设置
分享链接:http://xn--qrqa955a.xn--fiqs8s/?p=1526
除非另有声明,本网站采用知识共享“署名-非商业性使用-相同方式共享 (by-nc-sa) 3.0 中国大陆”许可协议授权。