gpt4 book ai didi

c++ - 使用 GPU (C++/OpenCV) 显示文件中的图像

转载 作者:行者123 更新时间:2023-11-28 00:13:50 25 4
gpt4 key购买 nike

我正在按照一个示例使用 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;
}

但是,我不断收到一条错误消息,指出 d_dst 未定义 gpu::GpuMat d_src(src)gpu::GpuMat 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

我是新手,所以我不确定我是否错过了额外的依赖项、 header 或需要使用 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 但是哦,好吧。

最佳答案

尝试包含 core.hpp。在我的例子中,它位于 opencv2/core/core.hpp

并且您必须修复对 bilateralFilter(...) 和 Canny(...) 的函数调用。参数号错误。

像这样的东西:

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;
}

你还没有提到任何关于你的开发环境...(Win、Linux、Android、OpenCV 版本)。

我在 tegra 板上工作,所以对我来说情况可能有点不同。我在我的开发环境中试用了这个示例。而且效果很好。

enter image description here

enter image description here

太酷了!

关于c++ - 使用 GPU (C++/OpenCV) 显示文件中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31601135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com