【发布时间】:2015-10-14 13:43:16
【问题描述】:
我正在按照一个示例使用 GPU 来操作和显示来自 C++/OpenCV 文件的图像(来自这里:http://on-demand.gputechconf.com/gtc/2013/webinar/opencv-gtc-express-shalini-gupta.pdf)。代码是:
#include <opencv2/opencv.hpp>
#include <opencv2/gpu/gpu.hpp>
#include <opencv2/gpu/gpumat.hpp>
using namespace cv;
int main()
{
Mat src = imread("car1080.jpg", 0);
if (!src.data) exit(1);
gpu::GpuMat d_src(src);
gpu::GpuMat d_dst;
gpu::bilateralFilter(d_src, gpu::Canny(d_dst, d_dst, 35, 200, 3);
Mat dst(d_dst);
imshow("out.png", dst);
return 0;
}
但是,我不断收到一条错误消息,指出 gpu::GpuMat d_src(src) 和 gpu::GpuMat d_dst 部分的 d_dst 未定义。根据我的阅读,这是因为我没有包含文件、声明或其他内容。
以下是我的附加依赖项列表:
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib
我对这一切都很陌生,所以我不确定我是否错过了额外的依赖项、标题或需要使用 Visual Studio 2012 安装/配置一些 GPU 组件。
任何帮助将不胜感激!谢谢!
更新:下面是我编译好的新代码;但是,即使将imwrite 行替换为imshow,也不会显示图像。 编辑我现在意识到我的代码在if (!src.data) exit(1); 行停止,大概是因为图像文件没有被正确读取?
#include <stdio.h>
#include <direct.h>
#include "fstream"
#include "iostream"
#include <vector>
#include "opencv2/core/core.hpp"
#include "opencv2/core/gpumat.hpp"
#include "opencv2/core/opengl_interop.hpp"
#include "opencv2/gpu/gpu.hpp"
#include "opencv2/ml/ml.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/contrib/contrib.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/imgproc/imgproc.hpp"
int main(){
Mat src = imread("car.jpg", 0);
if (!src.data) exit(1);
gpu::GpuMat d_src(src);
gpu::GpuMat d_dst;
gpu::bilateralFilter(d_src, d_dst,15, 80,80);
Mat dst(d_dst);
imwrite("out.png", dst);
return 0;
}
注意 - 我可能不需要所有这些 #includes 但哦,好吧。
【问题讨论】:
-
如果您想使用基于 GPU 的计算,您有 3 个选项 1) OpenCL (OCL) 或 2) 基于 Cuda 的 GPU 处理 3) 基于 OpenGL 的 GPU 处理。由于您使用的是 opencv 2.4.9 并且没有 OCL 或 Opengl 代码!我假设你正在使用 cuda。在这种情况下,您需要构建启用 cuda 的 opencv,并且需要包含那些 cuda 库和 dll!
-
尝试在
x64文件夹内链接库 -
如何链接它? (请原谅我的无知——这对我来说是全新的)。感谢您的帮助!
标签: c++ opencv image-processing cuda gpu