小编nki*_*int的帖子

用于多目标跟踪的粒子滤波器

我在跟踪计算机视觉的人.我有观察结果(blob作为背景扣除后blob检测的输出),我想推断产生这些观察结果的对象.

我对一些卡尔曼滤波器代码感到困扰.这对我来说很清楚,但我的问题是多目标跟踪:我的问题是有时观察结果不完整/嘈杂.让我更好地解释一下 - 在一个有明确观察的测试中,每个人都有1个blob.卡尔曼滤波器可以帮助我将人的嘈杂路径平滑成平滑的曲线.但是,这不是我的问题; 问题是,有时blob检测并不完美,我有1个人的2个blob(例如,如果我想跟踪的人穿着与背景相同颜色的T恤)或有时我有2个blob for 2人(例如,如果两个人拥抱自己或彼此太近).

我搜索了一些理论,我发现很多论文正在用粒子滤波器解决物体跟踪问题.所以我研究了贝叶斯滤波器,蒙特卡罗方法,重要性抽样,它有点清晰(我没有关于概率的数学知识来理解一切,但这个想法很清楚).

无论如何,我还不明白粒子滤波器如何帮助我检测2个blob对应1个对象或1个blob对应2个对象的情况.

有人可以帮助理解这个问题吗?

opencv tracking computer-vision particle-filter

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

获得点矢量的边界框?

我有一个存储在std::vector实例中的点矢量.我想计算这些点的边界框.我试过这段代码:

bool _compare1(ofPoint const &p1, ofPoint const &p2) {
    return p1.x < p2.x && p1.y < p2.y;
}
bool _compare4(ofPoint const &p1, ofPoint const &p2) {
    return p1.x > p2.x && p1.y > p2.y;
}
vector<ofPoint> points;

// ...
if(points.size()>1) {
    ofPoint p_min = *std::min_element(points.begin(), points.end(), &_compare1);
    ofPoint p_max = *std::min_element(points.begin(), points.end(), &_compare4);
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码产生了奇怪的结果.实际上我只对我的边界框的第一个和最后一个点感兴趣:

1------2
|\     |
| \    |
|  \   |
|   \  |
|    \ |
|     \|
3------4
Run Code Online (Sandbox Code Playgroud)

如果我的点代表对角线,我只对第1点和第4点感兴趣.

有没有聪明的方法来获得标准库或Boost?


当前的解决方案:

bool _compare_min_x(ofPoint …
Run Code Online (Sandbox Code Playgroud)

c++ boost std bounding-box

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

用cv2在python中创建一个多声道的零点

我想用cv2 opencv包装器在python中创建一个多通道mat对象.

我在网上找到了c ++ Mat :: zeros被numpy.zeros替换的例子,看起来不错.但没有多声道类型似乎适合..

看代码:

import cv2
import numpy as np

size = 200, 200
m = np.zeros(size, dtype=np.uint8) # ?
m = cv2.cvtColor(m, cv2.COLOR_GRAY2BGR)
p1 = (0,0)
p2 = (200, 200)
cv2.line(m, p1, p2, (0, 0, 255), 10)

cv2.namedWindow("draw", cv2.CV_WINDOW_AUTOSIZE)
while True:
    cv2.imshow("draw", m)

    ch = 0xFF & cv2.waitKey(1)
    if ch == 27:
        break
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我想避免m = cv2.cvtColor(m, cv2.COLOR_GRAY2BGR)但不起作用cv2.CV_8UC3 np.uin32.

一些提示?

python opencv numpy

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

Qt 4.8全屏隐藏光标

我在使用OpenBox的ArchLinux中,我希望在Qt 4.8应用程序中将光标隐藏在全屏上.我知道关于它的一些其他问题,但每次都没有人工作:有时光标隐藏,有时不隐藏.我没有设法理解问题何时发生,但我认为这可能与屏幕保护程序有关,因为如果我在重新启动计算机后测试我的应用程序,鼠标光标是不可见的(这是我想要的)但是如果我在白天测试此功能,鼠标光标仍然可以全屏显示.

这是我的代码:

void MainWindow::toggleFullScreen()
{
    if(!this->isFullScreen())
    {
        this->showFullScreen();
        #ifdef Q_WS_QWS
            QWSServer::setCursorVisible( false );
        #endif

    }
    else
    {
        this->showNormal();
    }
}
Run Code Online (Sandbox Code Playgroud)

mouse qt qt4 mouse-cursor

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

如何查看合并历史记录?

我正在使用git,但我不是它的专家.

我继承了遗留项目,它遵循git流程(我喜欢它):feature/name分支中的每个新功能.但是当新功能合并到develop主分支时,它们并没有被删除origin.所以我现在看到了许多分支,我不知道哪一个是旧分支,哪个是工作进展.

有没有办法在功能分支和开发之间建立合并历史?

编辑:我在Linux机器上

git merge

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

使用opencv和LUT减少颜色深度

我想通过颜色深度缩放来执行颜色缩减.

像这个例子: 在此输入图像描述

第一个图像是CGA分辨率,第二个是EGA,第三个是HAM.我想用cv :: LUT来做,因为我认为这样做更好.我可以使用以下代码处理灰度:

Mat img = imread("test1.jpg", 0);
uchar* p;
Mat lookUpTable(1, 256, CV_8U);
p = lookUpTable.data;
for( int i = 0; i < 256; ++i)
    p[i] = 16 * (i/16)
LUT(img, lookUpTable, reduced);
Run Code Online (Sandbox Code Playgroud)

原版的:在此输入图像描述

颜色减少: 在此输入图像描述

但如果我尝试用颜色做它我得到奇怪的结果..

在此输入图像描述

使用此代码:

imgColor = imread("test1.jpg");
Mat reducedColor;
int n = 16;
for (int i=0; i<256; i++) {
    uchar value = floor(i/n) * n;
    cout << (int)value << endl;
    lut.at<Vec3b>(i)[2]= (value >> 16) & 0xff;
    lut.at<Vec3b>(i)[1]= (value >> 8) & 0xff;
    lut.at<Vec3b>(i)[0]= value …
Run Code Online (Sandbox Code Playgroud)

c++ opencv colors depth

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

d3.js selectAll().每个svg路径.. undefined?

我正在以这种方式导入svg(从服务器作为静态内容)

d3.xml("http://localhost:3000/mysvg.svg", "image/svg+xml", function(xml) {
    var importedNode = document.importNode(xml.documentElement, true);
    var mySvg = d3.select("#somediv").node().appendChild(importedNode);
Run Code Online (Sandbox Code Playgroud)

然后我试图遍历所有的svg路径并用它们做点什么

    d3.selectAll("#somediv svg path").each(function(d, i) {
        console.log(this, d, i);
    });
}
Run Code Online (Sandbox Code Playgroud)

我得到的是这个问题

  • i 是从1到路径的数量,这是正确的.

  • dundefined而不是被正确SVG路径元件.

  • this 是svg路径元素,就像这个

    <path id="m021" fill="#00AAFF" d="M225.438,312.609c-0.665-1.084-1.062-1.691-2.368-1.963c-0.582-0.121-1.686-0.271-2.265-0.069 c-0.507,0.174-0.637,0.649-1.431,0.368c-0.934-0.33-0.665-1.272-0.71-2.104c-0.597-0.021-1.18,0-1.733,0.262 ...etc" ></path>

我期待d成为真正的svg路径,为什么不呢?

编辑:

对我想做的事情有点了解可能有所帮助.

我有一个svg,我的城镇的每个区都有一条路.我想在每条路径的中心制作一些饼图.我现在没有数据,它将用于饼图.我想在路径上创建鼠标悬停功能,并在每条路径上添加一个小红圈(在将来的步骤中将成为饼图).

做这个的最好方式是什么?

each svg d3.js

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

Opencv:扭曲回来

我有cameraMatrixdistCoeff不需要的图像或点矢量.现在我想扭曲它们.

Opencv有可能吗?我记得我在stackoverflow中读到了一些关于它但现在找不到的东西.

编辑:我找到了在这个答案中做到这一点的方法.它也在opencv开发人员专区(本期)

但我的结果不正确.或多或少存在2-4像素的误差.可能我的代码有问题,因为在答案中我把单元测试中的一切看起来都很好.也许从浮动到双重的类型转换,或者我看不到的其他东西.

这是我的测试用例:

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <iostream>

using namespace cv;
using namespace std;

void distortPoints(const std::vector<cv::Point2d> & src, std::vector<cv::Point2d> & dst,
                         const cv::Mat & cameraMatrix, const cv::Mat & distorsionMatrix)
{

  dst.clear();
  double fx = cameraMatrix.at<double>(0,0);
  double fy = cameraMatrix.at<double>(1,1);
  double ux = cameraMatrix.at<double>(0,2);
  double uy = cameraMatrix.at<double>(1,2);

  double k1 = distorsionMatrix.at<double>(0, 0);
  double k2 = distorsionMatrix.at<double>(0, 1);
  double p1 = distorsionMatrix.at<double>(0, 2);
  double p2 = distorsionMatrix.at<double>(0, 3);
  double …
Run Code Online (Sandbox Code Playgroud)

opencv distortion

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

d3 v4 - 使用与缩放行为冲突的按钮进行缩放

我已经用我的问题创造了一个要点.

我从这个例子开始.

所以我的问题是我需要一些放大和缩小按钮以及鼠标控件.

使用zoom()行为实现鼠标控件(通过拖动缩放轮和平移).它工作得很好.

然后我添加了两个用于放大和缩小的按钮:

var _zoom = d3.zoom()
    .scaleExtent([1 / 2, 8])
    .on("zoom", zoomed);
var gui = d3.select("#gui")
gui.append("span")
  .classed("zoom in", true)
  .text("+")
  .on("click", function() { _zoom.scaleBy(container, 2); })
gui.append("span")
  .classed("zoom out", true)
  .text("-")
  .on("click", function(){ _zoom.scaleBy(container, 0.5); })
Run Code Online (Sandbox Code Playgroud)

它们与鼠标行为发生冲突.要重现您必须缩放和拖动的错误(使用鼠标控件),然后单击+跨度:当前转换将被覆盖.

怎么解决?

javascript zoom pan d3.js d3.js-v4

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

用于matlab或python的rr数据的逼真ECG信号模拟器

我有一系列rr数据(PQRST心电图信号中rr峰值之间的距离),我想在matlab或python中生成逼真的ECG信号.我找到了matlab的一些材料(matlab中的ecg内置函数),但是我无法弄清楚如何从rr数据生成它,而且我没有找到python的东西.有什么建议?

python matlab signal-processing numpy scipy

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