OpenCV GPU扩展不工作
我试图使用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[__
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年看起来仍然不错。也感谢您包含头文件引用-它们被忽略的频率之高令人惊讶!!