小编hfi*_*ler的帖子

使用OpenCV和机器学习进行简单的对象检测

我必须使用OpenCV编码一个物体探测器(在这种情况下,一个球).问题是,google上的每一次搜索都会返回一些带有FACE DETECTION的内容.所以我需要帮助从哪里开始,使用什么等.

一些信息:

  • 球没有固定的颜色,它可能是白色的,但它可能会改变.
  • 我必须使用机器学习,不必是一个复杂和可靠的,建议是KNN(这是更简单和更容易).
  • 在我所有的搜索之后,我发现计算样本球直方图像的直方图并将其教导到ML可能是有用的,但我主要关注的是球的大小可以并且将会改变(越来越远离相机)和我不知道要把什么传递到ML给我分类,我的意思是......我不能(或者我可以?)只测试每个可能尺寸的图像的每个像素(从5x5到WxH) )并希望找到积极的结果.
  • 可能存在不均匀的背景,如人,球后面的布等.
  • 正如我所说,我必须使用ML算法,这意味着没有Haar或Viola算法.
  • 此外,我想使用轮廓在Canny'ed图像上找到圆圈,只需要找到一种方法将轮廓转换为一行数据来教授KNN.

    所以...建议?

    提前致谢.;)

c c++ opencv image-processing object-detection

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

来自纸张的概率密度函数,使用C++实现,不能按预期工作

所以我正在实现一个启发式算法,我遇到过这个功能.

我有一个1到n的数组(C,0到n-1,w/e).我想选择一些我将复制到另一个数组的元素.给定参数y,(0 <y <= 1),我希望得到平均值为(y*n)的数字分布.这意味着每当我调用此函数时,它会给出一个介于0和n之间的数字,这些数字的平均值为y​​*n.

根据作者,"l"是一个随机数:0 <l <n.在我的测试代码中,它当前生成0 <= l <= n.我有正确的代码,但我现在已经搞乱这几个小时了,而且我懒得把它编码回来.

所以我编写了函数的第一部分,对于y <= 0.5,我将y设置为0.2,并将n设置为100.这意味着它必须返回0到99之间的数字,平均为20.并且结果不是0和n,但有些漂浮.更大的n是,这个浮子越小.

这是C测试代码."x"是"l"参数.

//hate how code tag works, it's not even working now  
int n = 100;  
float y = 0.2;  
float n_copy;  

for(int i = 0 ; i < 20 ; i++)  
{  
    float x = (float) (rand()/(float)RAND_MAX);  // 0 <= x <= 1  
    x = x * n;                                // 0 <= x <= n  
    float p1 = (1 - y) / (n*y);  
    float p2 = …
Run Code Online (Sandbox Code Playgroud)

c++ heuristics probability montecarlo ant-colony

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

大页存在,但不是免费的也不是保留的。或者,如何释放大页面?

我正在运行一个 SPDK 实验(它使用 DPDK,而 DPDK 又使用大页面)并且它昨天运行正常。我在共享环境中运行它们(我认为还有一两个人使用这台机器来做其他事情)。现在,每当我尝试运行它时,我都会收到“无免费大页面”错误。

/proc/meminfo 的输出是:

HugePages_Total:    1024
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Run Code Online (Sandbox Code Playgroud)

挂载输出:

cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb)
Run Code Online (Sandbox Code Playgroud)

在我上一个环境中有效的东西不再有效:

umount -a -t hugetlbfs
mount -t hugetlbfs nodev /mnt/huge
Run Code Online (Sandbox Code Playgroud)

那么 /proc/meminfo 的输出是

HugePages_Total:    1024
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:     1024
Run Code Online (Sandbox Code Playgroud)

但如果我尝试运行它:

EAL: No free hugepages reported in hugepages-1048576kB
EAL: No free hugepages reported in hugepages-2048kB
PANIC in rte_eal_init():
Cannot get hugepage information
Run Code Online (Sandbox Code Playgroud)

为什么这些页面是多余的而不是免费的?有什么办法可以释放他们吗?我想重新启动系统,因为可能有其他作业正在运行或有人在使用它。

编辑:重新启动机器,分配更多的大页面,它们是免费的。执行测试,它崩溃了,现在大页又丢失了。

没有有效答案的相关问题(至少对我来说):

如何从崩溃的应用程序中释放大页面

如何真正释放 Linux 中的大页面以供新进程使用?

huge-pages dpdk

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

为什么这个c ++有效?(具有相同名称的变量)

好吧,我想知道为什么这段代码正常工作,我才意识到我在同一范围内有两个同名的变量.

我正在使用g ++(gcc 4.4).

for(int k = 0 ; k < n ; k++)
    {
        while(true)
        {
            i = Tools::randomInt(0, n);
            bool exists = false;

            for(int k = 0 ; k < p_new_solution_size ; k++)
                if( i == p_new_solution[k] )
                {
                    exists = true;
                    break;
                }
            if(!exists)
                break;
        }

        p_new_solution[p_new_solution_size] = i;
        p_new_solution_size++;
    }
Run Code Online (Sandbox Code Playgroud)

c++ scope

5
推荐指数
2
解决办法
7159
查看次数

如何将CURRENT_TIMESTAMP插入到PostgreSQL配置的Drupal安装中

我正在使用drupal和一个pgsql数据库,但经过长时间的搜索后,我仍然无法弄清楚如何在向表中插入行时将CURRENT_TIMESTAMP或now()放入数据库.将now()放在列的默认值上是行不通的,因为drupal不会在数据库模式上接受它,所以这是不可能的.

当前列类型是"没有时区的时间戳"或"没有时区的时间",drupal的架构接受.现在问题是在那里插入日期.

我试过了:

$now = format_date(time(), 'custom', 'Y-m-d H:i:s');

并使用字符串占位符'%s'插入它,但pgsql给了我一个错误.

我也尝试将类型更改为整数并使用time()php函数插入,并且它不起作用(如果它确实我在其他表上使用它),所以也许我会坚持使用时间戳类型,因为它更有意义.

database postgresql timestamp drupal

3
推荐指数
1
解决办法
6524
查看次数