Lua 调用 Opencv 的方法

 

Lua 调用 Opencv 的方法

  

  最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算。

  那么,怎么用 Lua 调用 Opencv 呢?

  查了 Torch 的官方文档,发现只有这么几个可以调用的包:

  链接: https://github.com/torch/torch7/wiki/Cheatsheet

 

    

  然后,你点击一个进去,发现有这么一个方法,可以安装对应的 Opencv 包:

  

    然后,你就在终端里输入: luarocks install cv ,发现半天没反应 。。。

  过了一会,有反应了,见下图:  

 

    然后,就是等待了,这个”龟速“ 真的不能忍!!!

  其实,这里并没有那么直接,因为,你发现,如果你没有下载好 Opencv 官方的软件包,安装的时候,会提示你错误,从而停止掉!

  

 

  所以,还是需要安装这个网页上提示的过程进行:https://github.com/VisionLabs/torch-opencv/wiki/Installation 

  首先,是下载安装 Opencv 官方的 3.1 Linux 版本文件;

  然后,确保你的 Torch 是没有问题的;

  然后就开始执行刚刚那一句:luarocks install cv,这里,如果你可以直接指定 Opencv 文件的路径,就更好了,即:

  例如: OpenCV_DIR="/home/wangxiao/opencv-3.1.0" luarocks install cv 

  然后,你能做的,就还是等待,等待,再等待 。。。 

 



 

  Sorry,又报错了:

    CMake Error at CMakeLists.txt:30 (FIND_PACKAGE):
    Could not find a configuration file for package "OpenCV" that is compatible
    with requested version "3.1".

    The following configuration files were considered but not accepted: 

    /home/wangxiao/opencv-3.1.0/cmake/OpenCVConfig.cmake, version: unknown
    /usr/share/OpenCV/OpenCVConfig.cmake, version: 2.4.9.1

    -- Configuring incomplete, errors occurred!
    See also "/tmp/luarocks_cv-scm-1-1973/torch-opencv/build/CMakeFiles/CMakeOutput.log".
    make: *** No targets specified and no makefile found. Stop.

 

  具体的是:

  

 

  

  此时的我,我特想打人。。。真的。。。

 

     后来找到一个关于求解 IoU 的帖子,来自于 Faster RCNN :  

 1 function o = boxoverlap(a, b)
 2 % Compute the symmetric intersection over union overlap between a set of
 3 % bounding boxes in a and a single bounding box in b.
 4 %
 5 % a  a matrix where each row specifies a bounding box
 6 % b  a matrix where each row specifies a bounding box
 7
 8 % AUTORIGHTS
 9 % -------------------------------------------------------
10 % Copyright (C) 2011-2012 Ross Girshick
11 % Copyright (C) 2008, 2009, 2010 Pedro Felzenszwalb, Ross Girshick
12 %
13 % This file is part of the voc-releaseX code
14 % (http://people.cs.uchicago.edu/~rbg/latent/)
15 % and is available under the terms of an MIT-like license
16 % provided in COPYING. Please retain this notice and
17 % COPYING if you use this file (or a portion of it) in
18 % your project.
19 % -------------------------------------------------------
20
21 o = cell(1, size(b, 1));
22 for i = 1:size(b, 1)
23     x1 = max(a(:,1), b(i,1));
24     y1 = max(a(:,2), b(i,2));
25     x2 = min(a(:,3), b(i,3));
26     y2 = min(a(:,4), b(i,4));
27
28     w = x2-x1+1;
29     h = y2-y1+1;
30     inter = w.*h;
31     aarea = (a(:,3)-a(:,1)+1) .* (a(:,4)-a(:,2)+1);
32     barea = (b(i,3)-b(i,1)+1) * (b(i,4)-b(i,2)+1);
33     % intersection over union overlap
34     o{i} = inter ./ (aarea+barea-inter);
35     % set invalid entries to 0 overlap
36     o{i}(w <= 0) = 0;
37     o{i}(h <= 0) = 0;
38 end
39
40 o = cell2mat(o);

 

   晚上回去,我找了找 Faster RCNN Torch版本的代码:

 1 function Rect.union(a, b)
 2   local minx = math.min(a.minX, b.minX)
 3   local miny = math.min(a.minY, b.minY)
 4   local maxx = math.max(a.maxX, b.maxX)
 5   local maxy = math.max(a.maxY, b.maxY)
 6   return Rect.new(minx, miny, maxx, maxy)
 7 end
 8
 9 function Rect.intersect(a, b)
10   local minx = math.max(a.minX, b.minX)
11   local miny = math.max(a.minY, b.minY)
12   local maxx = math.min(a.maxX, b.maxX)
13   local maxy = math.min(a.maxY, b.maxY)
14   if maxx >= minx and maxy >= miny then
15     return Rect.new(minx, miny, maxx, maxy)
16   else
17     return Rect.empty()
18   end
19 end
20
21 function Rect.IoU(a, b)
22   local i = Rect.intersect(a, b):area()
23   return i / (a:area() + b:area() - i)
24 end

 

 

 

   是的,这就是关于求解 IoU 的代码了,至于,怎么调用 Opencv,我想说的是,等我安装好工具包先(此刻已泪崩 。。。)

 

  

时间: 2024-10-02 23:51:30

Lua 调用 Opencv 的方法的相关文章

JavaWeb servlet中调用opencv类库的问题?

问题描述 JavaWeb servlet中调用opencv类库的问题? 我想在servlet 中调用的opencv , 由于我已经通过Java的main方法成功配置并且已经调用成功啦,但是用在servlet里面通过浏览器访问servlet就会报加载类库失败的错误 , 错误如下: java.lang.UnsatisfiedLinkError: no opencv_java247 in java.library.path java.lang.ClassLoader.loadLibrary(Class

php中动态调用函数的方法_php技巧

本文实例讲述了php中动态调用函数的方法.分享给大家供大家参考.具体分析如下: php中你可以动态调用函数,分为以下步骤: 1. 定义一个函数 2. 将函数名(字符串)赋值给一个变量 3. 使用变量名代替函数名动态调用函数 详细代码如下所示: <?php function addition ($a, $b){ echo ($a + $b), "\n"; } $result = "addition"; $result (3,6); ?> 希望本文所述对大家

Lua调用自定义C模块_Lua

这是<Lua程序设计>中提到的,但是想成功执行,对于初学Lua的确没那么简单.这里涉及如何如何生成一个动态链接库so文件:Lua5.2中导出函数从LuaL_register变成了LuaL_newlib.对于具体的细节有待深入.这里的模块名是hello_lib, Lua解释器会根据名字找到对应的模块,而后执行其中的 luaopen_XXX方法. 代码: #include <math.h> #include <lua5.2/lua.h> #include <lua5.

异步调用Web服务方法

基于Ajax技术构建的门户是web 2.0这一代中最为成功的Web应用程序.而这块市场上iGoogle和Pageflakes这两大站点已经走在了时代的前列. 当你打开Pageflakes,将会看到如下的界面: 接下来就是界面上的各个"部件"去向服务器请求各种web服务,而服务器作为代理,则代为向外部web服务发出请求.(这是因为ajax调用无法跨越,所以常通过代理来请求数据) 问题场景:某个很受用户欢迎的"部件"很长时间不能执行,导致很对请求无法及时执行,引起请求失

开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)

当你添加Asp.net AJAX功能到你的Web程序的时候,你需要在Web.config中做一些改变,需要你显式地移除默认的ASMX处理程序并且添加asp.net ajax框架自己的脚本处理器来作为ASMX处理程序.在上一篇异步调用Web服务方法中,我们谈论过,ajax框架的asmx(ScriptHandler)是不支持异步调用Web服务方法的,所以为了让asp.netajax支持异步Web方法调用,我们需要避开该处理器,以提供自定义的处理器来取代它. Asp.netAJAX框架的ASMX处理器

ocx-VS2010怎么使用OCX,调用里面的方法?

问题描述 VS2010怎么使用OCX,调用里面的方法? 能告诉我一下具体步骤,和调用里面的方法? 解决方案 工具栏右键,加载项,加入ocx组件,这样就和使用其他的一样了 解决方案二: 一种是增加类,导出ActiveX接口! 二是跟调用dll类似! 解决方案三: 在项目-添加引用,选择com选项卡,点浏览,找到你的ocx,确定即可. 解决方案四: import导入对应的com组件,然后就会生成包装类,你就可以调用类的方法

借助封装类实现线程调用带参方法

(一).描述      由于线程只能执行无参数方法. 有时候需要线程执行"带参数方法"      此示例演示怎样借助封装类实现"线程调用带参方法"(二).代码 本示例代码已经测试,能够正常运行! (三).示例下载  http://www.cnblogs.com/Files/ChengKing/ThreadExample.rar using System;using System.Threading; namespace 借助封装类实现_线程调用带参方法_{ clas

从Js调用一个AS方法

js 从Js调用一个AS方法: 为了从js调用as的方法,你必须确认一下四个文件都包含在你的html文档中: <script type="text/javascript" src="/path/to/Exception.js"></script>  <script type="text/javascript" src="/path/to/FlashTag.js"></script>

.net下不用AJAX实现前台JS调用后台C#方法(小技巧)

纯属小技巧,高手见笑了. 一提到如何在前台JS调用后台C#方法,AJAX成为了必然的想法. 只是实现的细节采用AJAX 1.0或者AjaxPro的区别. 其实如果不用AJAX,我们也能够很方便地利用JS调用后台方法. 步骤如下: 1 前台放一个按钮.设置为隐藏.注意:不能直接设置Visible=false的方式,这样的话在ASP.Net 2.0编译后的代码里是找不到这个按钮的.需要设置风格:style="display:none;" 2 双击按钮,写入C#方法,或者写一个调用后台其他方