Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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
C++ 基于CUDA的图像处理_C++_Visual Studio 2010_Opencv_Image Processing_Cuda - Fatal编程技术网

C++ 基于CUDA的图像处理

C++ 基于CUDA的图像处理,c++,visual-studio-2010,opencv,image-processing,cuda,C++,Visual Studio 2010,Opencv,Image Processing,Cuda,我在cuda文件中使用了openCV函数和变量。但出现以下错误: 19 IntelliSense:此声明没有存储类或类型 说明符 重载函数“cudamaloc”的实例与参数不匹配 名单 6智能感知:应为“;” 13智能感知:标识符“dim3”未定义 这是我的密码 #include <cxcore.h> #include <highgui.h> #include "opencv2/core/core.hpp" #include <iostream> #inclu

我在cuda文件中使用了openCV函数和变量。但出现以下错误:

  • 19 IntelliSense:此声明没有存储类或类型 说明符
  • 重载函数“cudamaloc”的实例与参数不匹配 名单
  • 6智能感知:应为“;”
  • 13智能感知:标识符“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; 
    }
    
    #包括
    #包括
    #包括“opencv2/core/core.hpp”
    #包括
    #包括“cuda.h”
    #包括
    #包括
    使用名称空间cv;
    使用名称空间std;
    __全局无效内核(void){
    }
    内部主(空)
    {
    原始图像;
    originalImage=imread(“C:\\lena.bmp”,CV\u LOAD\u IMAGE\u灰度);
    ///显示原始图像
    姓名(以下简称“原件”);
    整数x=0;整数y=0;
    移动窗口(“原始”,x,y);
    imshow(“原始”,原始图像);
    Mat dct image=originalImage.clone();
    dctImage.convertTo(dctImage,CV_32FC1,1.0/255.0);
    原始图像。转换到(原始图像,CV_32FC1,1.0/255.0);
    材料tmp1(512、512、CV_32FC1);
    调整大小(originalImage,originalImage,tmp1.size());
    调整大小(dctImage,dctImage,tmp1.size());
    
    CUT< P>我的第一个建议是将CUDA代码移到不同的文件中,这样就有了一个标准的编译器,执行OpenCV+程序流程,并让<代码> CUDA C++ ++/代码>编译器执行实际的CUDA代码,因为<代码> CUDA C++ > /COD>不是<代码> C++<代码>!而且您应该期望GCC或MSVC之类的标准编译器在CUD+C++中比CUDA C++更好。n-gpu模块。有很多教程介绍如何为项目中的不同文件设置不同的编译器,包括nvidia提供的特定教程

    至于您遇到的特定错误,dctImage.size()返回类型为
    Mat::size
    的对象,该对象不能隐式转换为
    size\t
    (在本上下文中,size\t表示字节数)。以下方法可用于确定Mat的缓冲区大小,但您可以查找以下Mat成员:Mat::elemSize、Mat::step、Mat::step1()、Mat::cols、Mat::rows、Mat::channels()。熟悉API后,这是一项简单的乘法任务