2013-10-14 10 views
6

मैं OpenCV मास्टर शाखा (3.0.0 देव।) का उपयोग कर रहा CUDA के साथ Ubuntu 12.04 पर, और GPU कोड के साथ निम्नलिखित opencv संकलित करने के लिए कोशिश कर रहा है:संकलन त्रुटि सीवी :: GPU

#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; 
         ^

यह कुछ OpenC की स्थापना के साथ कुछ गड़बड़ है वी, या ओपनसीवी 3.0.0 में एपीआई परिवर्तन?

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/14468191/error-with-gpumat-and-mat) – talonmies

उत्तर

19

gpu मॉड्यूल को ओपनसीवी 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; 
} 
[gpumat और चटाई के साथ त्रुटि] की
6

आह, वे मास्टर में स्थिरांक के साथ खेल रहे हैं। CV_* उपसर्ग को लगभग हटाएं (प्रकारों को छोड़कर, CV_8U और अभी भी जीवित हैं) की अपेक्षा करें।

तो यह cv::THRESH_BINARY है, cv::LOAD_IMAGE_GRAYSCALE, लेकिन .... cv::COLOR_BGR2GRAY (आप इसे अब उपयोग नहीं किया, लेकिन मैं आप खोज को छोड़ देंगे;))

क्षमा करें, मैं GPU सामान के साथ कोई अनुभव नहीं है , इसलिए मैं वहां अंतिम पहेली को हल नहीं कर सकता।

+0

धन्यवाद, काम मेरे लिए - ये कहां परिभाषित हैं? –

+1

ज्यादातर श्वास के शीर्ष पर। मॉड्यूल हेडर – berak