Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV GPU扩展不工作_Opencv_Gpu - Fatal编程技术网

OpenCV GPU扩展不工作

OpenCV GPU扩展不工作,opencv,gpu,Opencv,Gpu,我试图使用OpenCV GPU执行扩展和腐蚀功能,但由于某些原因,它返回了一个黑色图像。我就是搞不清楚问题出在哪里 我正在使用的代码: int erosionDilation_size = 5; Mat element = cv::getStructuringElement(MORPH_RECT, Size(2*erosionDilation_size + 1, 2*erosionDilation_size+1)); cv::gpu::dilate(_gpuProcessOutput[__

我试图使用OpenCV GPU执行扩展和腐蚀功能,但由于某些原因,它返回了一个黑色图像。我就是搞不清楚问题出在哪里

我正在使用的代码:

int erosionDilation_size = 5;
Mat element = cv::getStructuringElement(MORPH_RECT, Size(2*erosionDilation_size + 1,    2*erosionDilation_size+1));
cv::gpu::dilate(_gpuProcessOutput[__n],  _gpuProcessOutput[__n],element);
_gpuProcessOutput[__n].download(_frame[__n]);
imshow("Test",_frame[0]);
cvWaitKey(1000/120);
有人知道发生了什么吗?谢谢

更新 这就是我想要放大的图像! 这对我来说很有用:

    #include "opencv2/opencv.hpp"
    #include "opencv2/cudafilters.hpp"
    #include "opencv2/cudaimgproc.hpp"
    using namespace std;
    using namespace cv;
    using namespace cv::cuda;

    //-----------------------------------------------------------------------------------------------------
    //
    //-----------------------------------------------------------------------------------------------------
    int main ( int argc, char** argv )
    {
        cv::cuda::setDevice(0);
        // -------------------------------
        // 
        // -------------------------------
    Mat img=imread("test.png",0);
    int erosionDilation_size = 5;
    Mat element = cv::getStructuringElement(MORPH_RECT, Size(2*erosionDilation_size + 1,    2*erosionDilation_size+1));

    cuda::GpuMat d_element(element);
    cuda::GpuMat d_img(img);

    Ptr<cuda::Filter> dilateFilter = cuda::createMorphologyFilter(MORPH_DILATE, d_img.type(), element);
    dilateFilter->apply(d_img, d_img);


    d_img.download(img);

    d_img.release();
    d_element.release();

    imshow("test",img);
    waitKey();
    }
#包括“opencv2/opencv.hpp”
#包括“opencv2/CudFilters.hpp”
#包括“opencv2/cudaimgproc.hpp”
使用名称空间std;
使用名称空间cv;
使用名称空间cv::cuda;
//-----------------------------------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------------------------------
int main(int argc,字符**argv)
{
cv::cuda::setDevice(0);
// -------------------------------
// 
// -------------------------------
Mat img=imread(“test.png”,0);
内部腐蚀膨胀大小=5;
Mat element=cv::getStructuringElement(变形、大小(2*腐蚀膨胀大小+1,2*腐蚀膨胀大小+1));
cuda::GpuMat d_元素(元素);
cuda::GpuMat d_img(img);
Ptr dictalfilter=cuda::createMorphologyFilter(MORPH_dictal,d_img.type(),element);
过滤->应用(d_img,d_img);
d_img.下载(img);
d_img.release();
d_元素。release();
imshow(“测试”,img);
waitKey();
}

但是你能发布一个返回黑色图像的图像吗?我已经用这个图像编辑了主线程!谢谢我认为元素应该上传到设备上。那个已经上传了,我只是没有在上面的代码中添加行。我使用以下代码上传它:cv::Mat _tempMat_捕获>>\u tempMat_gpuFrame[\u\n]。上载(\u tempMat);你能解决这个问题吗?。如果你做了。。你能告诉我们怎么做吗?非常感谢,2021年看起来仍然不错。也感谢您包含头文件引用-它们被忽略的频率之高令人惊讶!!