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 :
function o = boxoverlap(a, b)
% Compute the symmetric intersection over union overlap between a set of
% bounding boxes in a and a single bounding box in b.
%
% a a matrix where each row specifies a bounding box
% b a matrix where each row specifies a bounding box % AUTORIGHTS
% -------------------------------------------------------
% Copyright (C) - Ross Girshick
% Copyright (C) , , Pedro Felzenszwalb, Ross Girshick
%
% This file is part of the voc-releaseX code
% (http://people.cs.uchicago.edu/~rbg/latent/)
% and is available under the terms of an MIT-like license
% provided in COPYING. Please retain this notice and
% COPYING if you use this file (or a portion of it) in
% your project.
% ------------------------------------------------------- o = cell(, size(b, ));
for i = :size(b, )
x1 = max(a(:,), b(i,));
y1 = max(a(:,), b(i,));
x2 = min(a(:,), b(i,));
y2 = min(a(:,), b(i,)); w = x2-x1+;
h = y2-y1+;
inter = w.*h;
aarea = (a(:,)-a(:,)+) .* (a(:,)-a(:,)+);
barea = (b(i,)-b(i,)+) * (b(i,)-b(i,)+);
% intersection over union overlap
o{i} = inter ./ (aarea+barea-inter);
% set invalid entries to overlap
o{i}(w <= ) = ;
o{i}(h <= ) = ;
end o = cell2mat(o);
晚上回去,我找了找 Faster RCNN Torch版本的代码:
function Rect.union(a, b)
local minx = math.min(a.minX, b.minX)
local miny = math.min(a.minY, b.minY)
local maxx = math.max(a.maxX, b.maxX)
local maxy = math.max(a.maxY, b.maxY)
return Rect.new(minx, miny, maxx, maxy)
end function Rect.intersect(a, b)
local minx = math.max(a.minX, b.minX)
local miny = math.max(a.minY, b.minY)
local maxx = math.min(a.maxX, b.maxX)
local maxy = math.min(a.maxY, b.maxY)
if maxx >= minx and maxy >= miny then
return Rect.new(minx, miny, maxx, maxy)
else
return Rect.empty()
end
end function Rect.IoU(a, b)
local i = Rect.intersect(a, b):area()
return i / (a:area() + b:area() - i)
end
是的,这就是关于求解 IoU 的代码了,至于,怎么调用 Opencv,我想说的是,等我安装好工具包先(此刻已泪崩 。。。)
Lua 调用 Opencv 的方法的更多相关文章
- Lua调用C++时打印堆栈信息
公司的手游项目,使用的是基于cocos2d-x绑lua的解决方案(参数quick-x的绑定),虽然使用了lua进行开发,更新很爽了,但是崩溃依然较为严重,从后台查看崩溃日志时,基本上只能靠" ...
- lua——元表、元方法、继承
[元表] 元表中的键为事件(event),称值为元方法(metamethod). 通过函数getmetatable查询不论什么值的元表,通过函数setmetatable替换表的元表. setmetat ...
- javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...
- Atitit 图像处理 调用opencv 通过java api attilax总结
Atitit 图像处理 调用opencv 通过java api attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...
- matlab和C/C++混合编程--调用opencv
最近的我们已经将整个项目搭起来了,项目比较复杂.由于我们做的是检索系统,所以我们用asp.net(c#)做了网页,但是算法的实现是在matlab下,所以我们不得不用matlab生成动态链接库dll,然 ...
- LUA OOP编程实现方法
lua原生不支持OOP特性 确实如此, 同时可以采用其它lua代码的方式实现OOP的特性. OOP四大特性 抽象 封装 继承 多态 http://www.cnblogs.com/xiaosongluf ...
- C#调用opencv
最经做一个项目,底层调用openCV编写的图像处理程序,用户界面采用C#编写. 于是学习了相关技术,总结如下: C#编写的是托管代码,编译生成微软中间语言,而普通C++代码则编译生成本地机器码,这两种 ...
- matlab调用opencv函数的配置
环境: VS2010 活动解决方案平台x64 WIN 8.1 Opencv 2.4.3 Matlab 2012a 1. 首先保证vs2010能正确调用opencv函数, 2. Matlab中选择编 ...
- Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]
Cocos2d-x下Lua调用C++这事之所以看起来这么复杂.网上所有的文档都没讲清楚,是因为存在5个层面的知识点: 1.在纯C环境下,把C函数注册进Lua环境,理解Lua和C之间可以互相调用的本质 ...
随机推荐
- linux msql
安装mysql 1.使用rpm 安装mysql 或者使用yum安装 使用rpm 安装 下载 Centos 7 所需要的mysql包 tar -xf 解压整合包 根据依赖 安装 common>li ...
- php反射
反射 //反射查找对象方法所在的文件名.$n_func = new ReflectionMethod($obj,$function);$filepath = $n_func->getFileNa ...
- window下安装pip工具,再利用pip安装工具来安装其他的python包
1.在安装pip前,请确认你window系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录C:\Python27\Scripts 下面,如 ...
- CMD的几个常用API
一: define, 全局函数,用来定义模块. 参数: 1.id 模块标识(可省略) 2.deps模块依赖(比如jquery)(可省略) 3.factory:可能是: (1)对象 (2)字符串 ①和 ...
- jsp九大内置对象和四大作用域
看到网上一些Jsp内置对象介绍的都不是很全,今天我把各位大神的整理了一下. JSP九大对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用. 一.reque ...
- VS2010,Qt插件安装使用
用了几次的QtCreateor,不习惯. 果断换回VS 基本步骤: 1.安装VS2010 2.安装Qt Creator5 3.安装Qt插件 qt-vs-addin-1.2.2-opensource 就 ...
- Ansible-Tower快速入门-7.配置实时事件【翻译】
配置实时事件 在tower的菜单中,在接近用户菜单处有一个带有颜色的小点,这个带颜色的小点显示tower的实时事件功能的状态 如果这个小点是绿色的,表示运行正常,如果这个小点是红色或橙色,表示实时事件 ...
- Swift---- 可选值类型(Optionals) 、 断言(Assertion) 、 集合 、 函数
1 使用数组实现九宫格 1.1 问题 Swift提供经典的数组和字典两种集合类型来存储集合数据.本案例使用数组实现一个九宫格程序,如图-1所示: 图-1 1.2 方案 九宫格就是有一个n行n列的方格, ...
- 3-Spark高级数据分析-第三章 音乐推荐和Audioscrobbler数据集
偏好是无法度量的. 相比其他的机器学习算法,推荐引擎的输出更直观,更容易理解. 接下来三章主要讲述Spark中主要的机器学习算法.其中一章围绕推荐引擎展开,主要介绍音乐推荐.在随后的章节中我们先介绍S ...
- css 居中
今天来总结一下自己知道的居中方法: 一.水平居中 1.text-align:center; 文字水平居中,也可以放在父元素中,强行让子元素居中. 2.margin: 0 auto; 使子元素在父 ...