编译错误 cv::gpu
Compiling error cv::gpu
我在 Ubuntu 12.04 上使用 OpenCV master 分支 (3.0.0. dev) 和 CUDA,并尝试使用 GPU 代码编译以下 opencv:
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/gpu/gpu.hpp"
using namespace cv;
int main (int argc, char* argv[])
{
try
{
cv::Mat src_host = cv::imread("file.png", CV_LOAD_IMAGE_GRAYSCALE);
cv::gpu::GpuMat dst, src;
src.upload(src_host);
cv::gpu::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);
cv::Mat result_host = dst;
cv::imshow("Result", result_host);
cv::waitKey();
}
catch(const cv::Exception& ex)
{
std::cout << "Error: " << ex.what() << std::endl;
}
return 0;
}
编译命令为:
g++ testgpu.cpp -o test `pkg-config --cflags --libs opencv` -lopencv_gpu
它具有以下编译错误:
testgpu.cpp: In function ‘int main(int, char**)’:
testgpu.cpp:13:51: error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
cv::Mat src_host = cv::imread("file.png", CV_LOAD_IMAGE_GRAYSCALE);
^
testgpu.cpp:17:52: error: ‘CV_THRESH_BINARY’ was not declared in this scope
cv::gpu::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);
^
testgpu.cpp:19:31: error: conversion from ‘cv::gpu::GpuMat’ to non-scalar type ‘cv::Mat’ requested
cv::Mat result_host = dst;
^
OpenCV的安装有问题,还是Opencv 3.0.0中的API更改?
gpu
模块在OpenCV 3.0中重新设计。它被拆分为几个模块,它被重命名为cuda
gpu::
命名空间被重命名为cuda::
。OpenCV 3.0的正确代码:
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/cudaarithm.hpp"
using namespace cv;
int main (int argc, char* argv[])
{
try
{
cv::Mat src_host = cv::imread("file.png", cv::IMREAD_GRAYSCALE);
cv::cuda::GpuMat dst, src;
src.upload(src_host);
cv::cuda::threshold(src, dst, 128.0, 255.0, cv::THRESH_BINARY);
cv::Mat result_host(dst);
cv::imshow("Result", result_host);
cv::waitKey();
}
catch(const cv::Exception& ex)
{
std::cout << "Error: " << ex.what() << std::endl;
}
return 0;
}
啊,他们一直在玩 master 中的常量。预计几乎可以在任何地方删除CV_*
前缀(除了类型,CV_8U
等仍然有效)。
所以cv::THRESH_BINARY
,cv::LOAD_IMAGE_GRAYSCALE
,但是.... cv::COLOR_BGR2GRAY
(你现在没有使用它,但我就省你搜索;))
抱歉,我没有 GPU 方面的经验,所以我无法解决那里的最后一个谜语。
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 概念中的cv限定符需要表达式参数列表
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 将CHW格式的浮点向量转换为cv::Mat
- 错误的cv::face FacemarkLBF实例化
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- 如何检查给定的参数是否为 cv::noArray()?
- 开放 CV 中的动态内存分配,用于视频处理
- 如何在 opencv 中使用 cv::VideoCapture::waitAny()
- 在 DirectX 11 中从 GPU 读回顶点缓冲区(并获取顶点)
- 错误:未定义对cv::cudacodec::createVideoReader的引用
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- 跨平台 GPU 计算
- C++:从GPU内存(cudaMemcpy2D)获取BGR图像(cv::Mat)
- 请求最简单的 OpenMP 目标 GPU 示例
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- C++:升级到 GTX970 后,cv::gpu:GpuMat::upload 延迟较长
- 编译错误 cv::gpu
- cv::gpu::SURF_gpu使用期间出现问题:未在此范围中声明“KeyPoint”
- 为什么cv::gpu::GaussianBlur比cv::Gaussian Blur慢