我在尝试从cv :: Mat转换为gpu :: Mat时遇到问题。我正在使用VS2012 Win7 x64。
这是代码:
#include "opencv2/imgproc/imgproc.hpp"
#include <opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
#include <opencv2\gpu\gpu.hpp>
#include "cv.h"
#include "cxcore.h"
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace cv;
using namespace cv::gpu;
int main () {
Mat src = cv::imread("pic1.jpg");
gpu::GpuMat d_src, d_dst;
d_src.upload(src);
gpu::bilateralFilter(d_src,d_dst, -1, 50, 7 );
gpu::Canny(d_dst, d_dst, 35, 200, 3);
Mat dst(d_dst);
imwrite("out.jpg", dst);
return 0;
}
我正在使用这么多包含因为在同一个文件中我声明了其他函数。
这是我包含的lib文件:
opencv_core246d.lib
opencv_imgproc246d.lib
opencv_highgui246d.lib
opencv_ml246d.lib
opencv_video246d.lib
opencv_features2d246d.lib
opencv_calib3d246d.lib
opencv_objdetect246d.lib
opencv_contrib246d.lib
opencv_legacy246d.lib
opencv_flann246d.lib
opencv_nonfree246d.lib
opencv_photo246d.lib
opencv_stitching246d.lib
opencv_superres246d.lib
opencv_ts246d.lib
这是我尝试编译时得到的
First-chance exception at 0x000007FEFDD29E5D in CVtest.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000025F8D0.
First-chance exception at 0x000007FEFDD29E5D in CVtest.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000025F8D0.
Unhandled exception at at 0x000007FEFDD29E5D in CVtest.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000025F8D0.
The program '[6592] CVtest.exe' has exited with code -1073741510 (0xc000013a).
只要我尝试在Mat和gpuMat之间进行更改,就会显示。
我怎么能解决这个问题?
答案 0 :(得分:1)
我在Windows计算机上使用带有VS2010的OpenCV上的GPU模块上传/下载时遇到了同样的问题。我正在使用您可以在OpenCV站点上下载的预编译的2.4.6二进制文件。
您需要确保卡上启用了CUDA + OpenGL(假设您已启用CUDA)。您需要做的第一件事就是运行(或者只使用C语言时等效):
cout << cv::getBuildInformation() << endl;
这将告诉您在OpenCV构建中启用或未启用的内容。它会打印很多信息,但要查找它打印“其他第三方库”的位置:
Other third-party libraries:
Use IPP: NO
Use Eigen: NO
Use TBB: NO
Use OpenMP: NO
Use GCD NO
Use Concurrency YES
Use C=: NO
Use Cuda: NO
Use OpenCL: NO
如果使用Cuda和/或使用OpenCL均为NO,则只要您调用上传和下载等GPU功能,您的程序就会崩溃。
要解决这个问题,您需要在启用这些技术的情况下编译OpenCV。对于Windows,我遵循了本指南:
http://www.programmerfish.com/how-to-build-opencv-2-4-6-with-gpu-module-in-windows/#.UpuDQcRLNBm
在使用OpenGL和CUDA支持编译2.4.7版本后,一切都完美无缺。