我想知道如何在OpenCV中绘制半透明的形状,类似于下图中的那些(来自http://tellthattomycamera.wordpress.com/)
我不需要那些花哨的圆圈,但我希望能够绘制一个矩形,例如,在3通道彩色图像上,并指定矩形的透明度,类似于
rectangle (img, Point (100,100), Point (300,300), Scalar (0,125,125,0.4), CV_FILLED);
Run Code Online (Sandbox Code Playgroud)
0,125,125
矩形的颜色在哪里,并0.4
指定透明度.但是,OpenCV没有在其绘图功能中内置此功能.如何在OpenCV中绘制形状,以便绘制的原始图像通过形状部分可见?
我正在使用http://www.cis.upenn.edu/~jshi/software/Ncut_9.zip中的规范化剪切包 (在Windows 7上)
这曾经与Matlab2010a一起使用.但是我已升级到Matlab2013a(32位学生版),现在我收到以下错误:
Error using arpackc
Expect 2 output arguments
Error in eigs_new (line 240)
arpackc( aupdfun, ido, ...
Error in ncut (line 83)
[vbar,s,convergence] =
eigs_new(@mex_w_times_x_symmetric,size(P,1),nbEigenValues,'LA',options,tril(P));
Error in ncutW (line 9)
[NcutEigenvectors,NcutEigenvalues] =
ncut(W,nbcluster);
Error in NcutImage (line 18)
[NcutDiscrete,NcutEigenvectors,NcutEigenvalues]
= ncutW(W,nbSegments);
Error in demoNcutImage (line 25)
[SegLabel,NcutDiscrete,NcutEigenvectors,NcutEigenvalues,W,imageEdges]=
NcutImage(I,nbSegments);
Run Code Online (Sandbox Code Playgroud)
显然,该new_eigs()
函数ncuts
与最新的Matlab中的ARPACK版本不兼容.
eigs()
函数的修改版本.为什么我不能只使用Matlab的内置eigs()
而不是eigs_new()
(它似乎工作).matlab cluster-analysis image-processing image-segmentation arpack
所以就是这样,我希望从服务器获取摄像机视频流,并且能够知道有多少人出现在它上面.
我可以在我的服务器上安装任何操作系统(MAC,Windows,Linux),使用任何API(免费或付费)和任何语言(C++,php等)来执行此操作.
我已经发现了一些有趣的东西,比如OpenCV,但我认为它比面部识别更有用,而不是知道房间里的人数......
任何帮助,将不胜感激 :)
我正在寻找最佳解决方案来生成(在OpenCV中)一个矩阵(2xN)的随机数,其均值为0,方差为1,就像Matlab中的函数randn()一样.
randn()
OpenCV库中有一个函数,但我不知道如何将参数传递给此函数以生成平均值为0且方差为1的数字.
根据维基百科:
机器 epsilon 被定义为最小的数字,当它与 1 相加时,会产生与 1 不同的结果
在 Python 中,可以使用 epsilon 找到它sys.float_info.epsilon
并返回相当于 2^-52 的值。但是,我可以将任何大于 2^-53 的数字与 1 相加,但仍然得到与 1 不同的结果。但根据上面 epsilon 的定义,将任何小于 epsilon 的值加到 1 应该得到 1。这是否意味着sys.float_info.epsilon
返回了错误的值,或者 Python 正在使用 epsilon 的其他定义?
以下代码说明了这一点,并以十六进制格式打印出浮点数。
import sys
import numpy
print 'epsilon=%g' % sys.float_info.epsilon
# output: 2.22045e-16
epsilon = sys.float_info.epsilon
print 'epsilon(hex) = %s' % float.hex(epsilon)
# output: 0x1.0000000000000p-52
one = numpy.float64(1.0)
delta = float.fromhex('0x1.fffffffffffffp-53')
print 'delta = %s' % float.hex(delta)
print 'epsilon - delta = %s' …
Run Code Online (Sandbox Code Playgroud) 我有一个HTML5网页示例
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function log(msg) { console.log(msg); }
$(document).ready(function() {
var video = document.getElementById("video");
video.load();
video.addEventListener('loadedmetadata', function(){
video.currentTime = 95.061728395;
});
});
</script>
<body>
<video id="video" preload="none" height="360" width="640">
<source src="news.mp4">
Your browser does not support this video.
</video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
手动设置视频标签的currentTime属性,但是它正在寻找与我使用OpenCV / mplayer得到的帧不同的帧,并寻求相同的时间。
使用javascript,我会在有效时间搜索视频,并获得一个通常通常比该帧早2帧的帧。我在用
video.currentTime = 95.061728
在浏览器中
echo -n p | mplayer -ss 95.061728395 static/news.mp4
作为复制框架内容的命令。OpenCV代码与mplayer框架要查找的内容匹配。
在mplayer中,视频格式为:
Playing static/news.mp4.
libavformat version 53.21.1 (external)
Mismatching header version 53.19.0
libavformat file format detected.
[lavf] stream 0: …
Run Code Online (Sandbox Code Playgroud) 我正在研究一个java图像处理程序(基于OpenCV library
).
我需要从第一张图像中删除噪点,以获得干净的图像,如下图所示.
在这种特殊情况下,消除噪音的最佳方法是什么?最重要的部分是如何去除图像周围的黑色部分.
第一张图片:
第二张图片:
A和B是矢量或长度N,其中N可以在20到200的范围内.我想计算这些向量之间距离的平方,即d ^ 2 = || AB || ^ 2.
到目前为止,我有:
float* a = ...;
float* b = ...;
float d2 = 0;
for(int k = 0; k < N; ++k)
{
float d = a[k] - b[k];
d2 += d * d;
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,除了我已经分析了我的代码,这是瓶颈(超过50%的时间花在这上面).我在Win 7上使用Visual Studio 2012,具有以下优化选项:/O2 /Oi /Ot /Oy-
.我的理解是VS2012应该自动矢量化该循环(使用SSE2).但是,如果我#pragma loop(no_vector)
在代码中插入我没有明显减慢速度,所以我猜这个循环没有被矢量化.编译器通过以下消息确认:
info C5002: loop not vectorized due to reason '1105'
Run Code Online (Sandbox Code Playgroud)
我的问题是:
reason '1105'
?必须手动编辑我创建的每个新项目的设置都非常繁琐.而且它非常容易出错,因此我有时会忘记添加一些内容并发生编译错误.
是否可以设置Visual Studio,以便OpenCV所需的设置自动应用于每个新项目?
顺便说一句,我正在使用Visual Studio 2010.
我有一个大小为 100x100x100 的多维矩阵 A,我想获得 A 的子矩阵,例如A[10:20, 20:30, 30:40]
。当原始矩阵有二维时,OpenCV 有一个 Mat 算子来访问子矩阵 ,例如:A(Range(10,20), Range(20,30))
对于多维矩阵,是否有任何有效的方法来进行这种访问?我问这个是因为我需要将子矩阵复制到另一个地方。