小编Bul*_*ull的帖子

如何创建半透明形状?

我想知道如何在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中绘制形状,以便绘制的原始图像通过形状部分可见?

c++ opencv shape alpha-transparency

24
推荐指数
2
解决办法
3万
查看次数

使用Matlab 2013a进行标准化切割

我正在使用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版本不兼容.

  • 有人知道解决方法吗?
  • 规范化使用Matlab eigs()函数的修改版本.为什么我不能只使用Matlab的内置eigs()而不是eigs_new()(它似乎工作).

matlab cluster-analysis image-processing image-segmentation arpack

7
推荐指数
2
解决办法
5387
查看次数

知道视频中有多少人

所以就是这样,我希望从服务器获取摄像机视频流,并且能够知道有多少人出现在它上面.

我可以在我的服务器上安装任何操作系统(MAC,Windows,Linux),使用任何API(免费或付费)和任何语言(C++,php等)来执行此操作.

我已经发现了一些有趣的东西,比如OpenCV,但我认为它比面部识别更有用,而不是知道房间里的人数......

任何帮助,将不胜感激 :)

opencv video-capture computer-vision

6
推荐指数
1
解决办法
1383
查看次数

OpenCV:像matlab一样的randn()生成器

我正在寻找最佳解决方案来生成(在OpenCV中)一个矩阵(2xN)的随机数,其均值为0,方差为1,就像Matlab中的函数randn()一样.

randn()OpenCV库中有一个函数,但我不知道如何将参数传递给此函数以生成平均值为0且方差为1的数字.

matlab opencv

6
推荐指数
1
解决办法
7736
查看次数

Python 的 epsilon 值正确吗?

根据维基百科

机器 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)

python numpy numeric numerical-methods

6
推荐指数
1
解决办法
2万
查看次数

HTML5 video.currentTime设置不正确

我有一个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)

html javascript video html5

5
推荐指数
1
解决办法
1922
查看次数

OpenCV去除图像中的噪声

我正在研究一个java图像处理程序(基于OpenCV library).

我需要从第一张图像中删除噪点,以获得干净的图像,如下图所示.

这种特殊情况下,消除噪音的最佳方法是什么?最重要的部分是如何去除图像周围的黑色部分.

第一张图片:

在此输入图像描述

第二张图片:

在此输入图像描述

java opencv image image-processing

5
推荐指数
1
解决办法
1340
查看次数

如何使用SSE2对距离计算进行矢量化

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)

我的问题是:

  1. 是否可以修复此代码以便VS2012可以对其进行矢量化?
  2. 如果没有,尝试自己对代码进行矢量化是否有意义?
  3. 你能推荐一个网站让我了解SSE2编码吗?
  4. N的某些值是否低于哪个矢量化会产生反作用?
  5. 什么是reason '1105'

c++ optimization vectorization sse2 visual-c++

4
推荐指数
1
解决办法
1426
查看次数

如何让我的OpenCV设置成为我所有Visual Studio C++项目的默认设置?

必须手动编辑我创建的每个新项目的设置都非常繁琐.而且它非常容易出错,因此我有时会忘记添加一些内容并发生编译错误.

是否可以设置Visual Studio,以便OpenCV所需的设置自动应用于每个新项目?

顺便说一句,我正在使用Visual Studio 2010.

opencv visual-studio-2010 visual-c++

4
推荐指数
1
解决办法
1717
查看次数

如何在 OpenCV 函数中访问多维矩阵的子矩阵?

我有一个大小为 100x100x100 的多维矩阵 A,我想获得 A 的子矩阵,例如A[10:20, 20:30, 30:40]。当原始矩阵有二维时,OpenCV 有一个 Mat 算子来访问子矩阵 ,例如:A(Range(10,20), Range(20,30))

对于多维矩阵,是否有任何有效的方法来进行这种访问?我问这个是因为我需要将子矩阵复制到另一个地方。

c++ opencv matrix

4
推荐指数
1
解决办法
1788
查看次数