2012-12-16 17 views
8

में ओपनसीवी को संकलित और लिंक करना मैंने उबंटू 12.04 में ठीक से लिंक करने के लिए ओपनसीवी प्राप्त करने में निराशाजनक रूप से लंबे समय तक बिताया और सोचा कि मैं दूसरों के लाभ के लिए जो कुछ सीखता हूं उसे साझा करूंगा।उबंटू 12.04

OpenCV अब

sudo apt-get install libopencv-dev 

जो बहुत अच्छा है के रूप में Ubuntu खजाने में उपलब्ध है, लेकिन मेरा मानना ​​है कि (कृपया मुझे ठीक कर लें मैं गलत हूँ) opencv के इस संस्करण पुस्तकालयों के लिए एक अलग नामकरण परंपरा है । मुख्य अंतर यह है कि सी ++ में लाइन को

#include "opencv2/opencv.hpp" 

यह आपके कोड को ऑब्जेक्ट करने के लिए संकलित करेगा लेकिन लिंक नहीं करेगा। दूसरा अंतर यह है कि स्थिर पुस्तकालयों का नाम बदलकर libcv * से libopencv * रखा गया है। उदाहरण के लिए बाइनरी अब

/usr/lib/libopencv_core.so 
/usr/lib/libopencv_highgui.so 
. 
. 
. 

पर स्थित हो सकता यह मैं स्पष्ट रूप से

g++ main.cpp -lopencv_core -lopencv_highgui ... 

लिए या में CMake

target_link_libraries(main opencv_core opencv_highgui ...) 
मेरी संकलक आदेश बदलकर नए पुस्तकालय नाम के बारे में लिंकर बताने के लिए की जरूरत है ठीक करने के लिए

मुझे आशा है कि इससे मदद मिलती है। और अगर कोई मुझसे ज्यादा जानता है तो मुझे यह पता लगाना अच्छा लगेगा कि यहां क्या हो रहा है।

-माइक

+0

आप कैसे Ubuntu पर ग्रहण पर भी ऐसा ही करने में पता है? मैं उबंटू 12.04 पर ग्रहण 3.7 का उपयोग कर रहा हूं .. – wrahool

उत्तर

5

व्यक्तिगत रूप से, मैं उपयोग कर रहा हूँ 'pkg-config' संकलन झंडे मिलता है।

g++ `pkg-config --cflags opencv` main.c `pkg-config --libs opencv` -o main 

मुख्य का उदाहरण:

#include <stdio.h> 
#include <cv.h> 

int main(void) 
{ 
    printf("%s\r\n", CV_VERSION); 
    printf("%u.%u.%u\r\n", CV_MAJOR_VERSION, CV_MINOR_VERSION, CV_SUBMINOR_VERSION); 
} 
संबंधित मुद्दे