小编Dav*_*ing的帖子

使用DLib提取感兴趣区域

我正在做一个图像处理项目.我需要从一个varible(cv_image <bgr_pixel>)到另一个变量(cv_image <bgr_pixel>)中提取一个感兴趣的区域dlib::rectangle varible

在OpenCV中,它像:

Mat mainImage=cv::imread(location,0);
Mat roi = mainImage(cv::Rect(0,0,100,100))
Run Code Online (Sandbox Code Playgroud)

在Dlib中有没有类似的方法?

opencv image image-processing dlib

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

std :: shared_ptr中的错误?

执行以下程序时应该怎么办?

#include <iostream>
#include <memory>

class test;
std::shared_ptr<test> a_test_object;
struct test
{
    ~test()
    {
        std::cout << "destroy test" << std::endl;
        auto ptr = a_test_object;
    }
};

int main()
{
    a_test_object = std::make_shared<test>();
    //a_test_object.reset();  // Uncomment this and it works fine.
}
Run Code Online (Sandbox Code Playgroud)

我在GCC和Visual Studio 2015上测试了这个,在这两种情况下程序都崩溃了.发生的事情是共享指针在其析构函数中递减计数,然后执行~test(),复制共享指针递增然后递减计数,触发对~test()的无限递归调用.奇怪的是,调用reset()不会触发问题.

我今天碰到了这个,因为使用了一个没有这个双重删除错误的前C++ 11版本的shared_ptr的旧代码被更新为使用std :: shared_ptr.令我惊讶的是,std :: shared_ptr导致程序崩溃.这真的是std :: shared_ptr的预期行为吗?

c++ shared-ptr object-lifetime c++11

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