c++ - CUDA图像处理

标签 c++ visual-studio-2010 opencv image-processing cuda

我在 cuda 文件中使用了 openCV 函数和变量。但是我得到了这些错误:

  1. 19 IntelliSense:此声明没有存储类或类型 说明符
  2. 没有重载函数“cudaMalloc”的实例与参数匹配 列表
  3. 6 IntelliSense:应为“;”
  4. 13 IntelliSense:标识符“dim3”未定义

这是我的代码

#include <cxcore.h>
#include <highgui.h>
#include "opencv2/core/core.hpp"
#include <iostream>
#include "cuda.h" 
#include <tchar.h>
#include <cv.h>
using namespace cv;
using namespace std;

__global__ void kernel( void ) { 
}
int main( void ) 
{
Mat originalImage;     
originalImage = imread("C:\\lena.bmp",CV_LOAD_IMAGE_GRAYSCALE);   


/// show original image
namedWindow("Original");
int x = 0; int y = 0;
moveWindow("Original",x,y);
imshow("Original", originalImage);

Mat dctImage = originalImage.clone();
dctImage.convertTo(dctImage,CV_32FC1, 1.0/255.0);
originalImage.convertTo(originalImage,CV_32FC1, 1.0/255.0);
Mat tmp1(512, 512, CV_32FC1);
resize(originalImage, originalImage, tmp1.size());
resize(dctImage, dctImage, tmp1.size());

cout<<dctImage.type()<<endl;
cout<<wmrk.size()<<endl;
////declare device variable    
float *dctImage_dev , *wmrk_dev;

dim3 blocks(64,64);
dim3 threads(8,8);

/////allocate memory on device
//cudaMalloc( (void**)dctImage_dev, dctImage.size() ) ;

/////launch kernel
kernel<<<1,1>>>();
printf( "Hello, World!\n" );

cvWaitKey(80000);

return 0; 
}

最佳答案

我的第一个建议是将 cuda 代码移动到不同的文件中,这样你就有一个标准的编译器来执行 opencv + 程序流,让 cuda c++ 编译器执行实际的 cuda 代码,因为 cuda c++ 不是 c++ !而且你应该期望像 gcc 或 msvc 这样的标准编译器在非 gpu 模块中比 cuda c++ 做得更好。有很多教程可以解释如何为项目中的不同文件设置不同的编译器,包括 nvidia 的特定教程。

至于你遇到的具体错误,dctImage.size() 返回类型为 Mat::Size 的对象,它不能隐式转换为 size_t(size_t in此上下文表示字节数)。以下方法可帮助您确定 Mat 的缓冲区大小,但您可以查找以下 Mat 成员 here : Mat::elemSize, Mat::step, Mat::step1(), Mat::cols,Mat::rows,Mat::channels().当您熟悉 API 时,这是一项微不足道的乘法任务。

关于c++ - CUDA图像处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30479188/

相关文章:

python - opencv python具有坐标的三角形网格

c++ - 迭代 C++ 映射给出无限循环

c++ - 将带有时间戳的 vector 整数连接为 C++ 中的字符串?

c++ - 未定义行为和 C++ 语言稳定性

c++ - TCHAR 数组在反斜杠后追加 w

.net - 更好的资源文件值工具提示格式?

c++ - 在 dll 接口(interface)中使用 STL 类时消除 C4251 警告的一种方法

visual-studio - 如何使用 Visual Studio 网站项目进行 Web.config 转换?

Java OpenCV 绑定(bind)

python - 有没有办法可视化 haar 级联文件?