小编anc*_*jic的帖子

Valgrind OpenCV

这是我的测试程序:

#include "opencv2/videoio.hpp"

int main(int argc, char** argv) {
    cv::VideoCapture videoCapture(argv[1]);
    cv::Mat frame;
    videoCapture.read(frame);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我这样运行这个程序:

valgrind --leak-check=yes ./GyroRecord ./walks6/w63/39840012.avi > valgrind_output 2>&1
Run Code Online (Sandbox Code Playgroud)

这样整个输出就保存在valgrind_output文件中。

的内容可以在这里valgrind_output查看。

但是,如果链接将来失效,总结如下:

==9677== LEAK SUMMARY:
==9677==    definitely lost: 0 bytes in 0 blocks
==9677==    indirectly lost: 0 bytes in 0 blocks
==9677==      possibly lost: 1,352 bytes in 18 blocks
==9677==    still reachable: 166,408 bytes in 1,296 blocks
==9677==                       of which reachable via heuristic:
==9677==                         newarray           : 1,536 bytes in …
Run Code Online (Sandbox Code Playgroud)

c++ opencv valgrind

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

Eigen static libaligned_free“双重释放或损坏”

这是先前帖子的延续。

但这一次希望有一个更好的例子。设置向量时,这个简单的测试会崩溃。

我正在使用 Ubuntu 20.04、gcc 9.3.0、c++17、eigen 3.3.7

主程序

#include <iostream>
#include <memory>
#include "C.h"

using namespace std;

class B { 
public:
    C c;

    B() {
        cout << (uint64_t)this << endl;
    }
    ~B(){}

};

int main() {

    shared_ptr<B> b = make_shared<B>();

    b->c.v = VectorXd(5); // << crashes here
    // SIGABRT on `Eigen::internal::aligned_free` when trying to do `std::free()`

    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

C 类作为静态库链接。静态库在Release模式( )下编译--std=c++17 -DNDEBUG -O3,而主程序在Debug模式下运行——没有优化。如果静态库和主程序都以调试方式运行,则不会发生崩溃。另外,如果它们都在 Release 中运行,则不会发生崩溃。仅当在Release中编译静态lib并且在Debug中编译主程序时,才会出现该问题。

Ch

#pragma once
#include <vector>
#include <Eigen/Core>

using namespace std;
using …
Run Code Online (Sandbox Code Playgroud)

c++ eigen

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

OpenCV GPU模糊很慢

GPU: GeForce GTX 750

中央处理器: Intel i5-4440 3.10 GHz

这是一个我正在运行的简单C++代码.

    #include <iostream>
    #include "opencv2/highgui/highgui.hpp"
    #include "opencv2\gpu\gpu.hpp"

    int main(int argc, char** argv) {
        cv::Mat img0 = cv::imread("IMG_0984.jpg", CV_LOAD_IMAGE_GRAYSCALE); // Size 3264 x 2448
        cv::Mat img0Blurred;

        cv::gpu::GpuMat gpuImg0(img0);
        cv::gpu::GpuMat gpuImage0Blurred;

        int64 tickCount;

        for (int i = 0; i < 5; i++)
        {
            tickCount = cv::getTickCount();
            cv::blur(img0, img0Blurred, cv::Size(7, 7));
            std::cout << "CPU Blur " << (cv::getTickCount() - tickCount) / cv::getTickFrequency() << std::endl;

            tickCount = cv::getTickCount();
            cv::gpu::blur(gpuImg0, gpuImage0Blurred, cv::Size(7, 7));
            std::cout << "GPU …
Run Code Online (Sandbox Code Playgroud)

opencv cuda gpu

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

发散相机的极线

我读到有关极线和立体视觉的每个地方我都看到了相同的图片:

在此输入图像描述

总是会聚相机.

我可以想象,即使相机发散(看起来彼此有点远),也有一条极线.

但我似乎无法弄清楚它应该如何定位.

有帮助吗?

编辑

相机捕获了很多相同的区域.但他们只是略微转过身来.

据我所知,当它们略微收敛时,我会在两个投影中心之间划一条线.这条线与投影平面相交的地方,这些是我的epipoles.当摄像机完全平行时,epipoles无限.但是当摄像机略微发散时,使用相同的方法来构造epipoles将使它们从无穷远返回并随着发散角的增加而更加靠近.

使用我已经呈现的图片.如果我开始纠正两个蓝色平面,那么epipole eL将一直向右移动到无限远.如果我然后旋转蓝色投影平面太远,eL将从左无限转移到右无限.

这是看到这个的正确方法吗?或者在相机发散时应用一些特殊规则?

computer-vision stereo-3d

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

AngularJS:一个承诺的多个'thens'

有可能做这样的事情:

var citiesPromise = citiesService.getCities();
var usersPromise = usersService.getUsers();

citiesPromise.then(function(citiesResult) {
  // cities will load very quick, and I can do something with them
);

$q.all([citiesPromise, usersPromise]).then(function(results) {
  // users will probably load after cities, but both results must be available
);
Run Code Online (Sandbox Code Playgroud)

换句话说,我需要一个将作为事件调度程序的承诺,并且对该承诺的每次'then'调用就好像事件监听器被添加到该承诺中一样.当promise被解决或拒绝时,将通知所有事件侦听器.

这可以实现,或者在这种情况下应该只将"$ q.all"作为单点来处理所有结果?

这样做我会得到什么?也许在这种情况下并不多,但如果我要进行10次或更多次ajax调用,如果页面逐渐加载,而不是浪费时间等待http请求,那将会很酷......

promise angularjs

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

标签 统计

c++ ×2

opencv ×2

angularjs ×1

computer-vision ×1

cuda ×1

eigen ×1

gpu ×1

promise ×1

stereo-3d ×1

valgrind ×1