2013-08-30 2 views
1

BeagleBone BlackUbuntu 12.04 (Precise Pangolin)이 있습니다.BeagleBone Black 및 Ubuntu 12.04 (Precise Pangolin)의 OpenCV 연결 문제

sudo apt-get install -y libopencv-dev 

이 명령은 설치에 필요한 헤더 및 라이브러리 : 나는 명령을 사용하여 APT에서 OpenCV 라이브러리를 다운로드했습니다.

gcc -I/usr/inlcude/ -I/usr/include/opencv2/ -L/usr/lib/ -lopencv_core -lopencv_highgui -lm opencv_test.c -o test 

'lrint'그리고 더 많은 마침내이 연결을 보여주는에 대한 참조를 찾을 수없는 것을 보여준다 몇 초 후 : 그럼 난 그냥 다음 명령 창을 보여주는 내 자신의 프로그램을 컴파일 cvNameWindow, cvShowImage 등의 오류가 발생했습니다.

이것이 설치된 라이브러리의 문제 일 수 있다고 생각합니다. OpenCV wiki에 제공된 코드를 크로스 컴파일하여 최신 우분투 컴퓨터에 -DUSE_NEON=ON 플래그가있는 최신 OpenCV 소스를 다운로드했습니다. 이 헤더와 라이브러리를 ext4 형식의 추가 파티션에 복사했습니다. 다시 명령을 내 렸습니다 :

gcc -I/usr/inlcude/ -I/media/misc/opencv/include/opencv/ -I/media/misc/opencv/include/ -L/usr/lib/ -L/media/misc/opencv/lib/ -lopencv_core -lopencv_highgui -lm opencv_test.c -o test 

참고 :/media/misc /는 추가 파티션입니다.

이 명령을 사용하면 이전과 동일한 결과를 얻을 수 있습니다. 이제 나는 그 지점으로 간다. 어쩌면 정확한 명령을 내고 있지 않을 수도 있습니다.

또한 나는에 g ++ GCC를 변경, 그것은 같은 나에게 오류를 제공합니다

unable to find reference cvNamedWindow 
unable to find reference cvShowImage 

+0

두 개의 동영상을 사용해 보셨습니까? www.youtube.com/watch?v=Sb0noQkTTjA 및 www.youtube.com/watch?v=T29BLCh1I54 – user2727765

+0

명령 줄에 typo 오류가 있습니다. -I/usr/inlcude /가 있지만 -I/usr/include /가 정확해야합니다. 그러나 나는 영향을 알기 위해 여기에 opencv를 설치하지 않았습니다. –

+0

예,하지만 기존 명령에서 오타를 만들지 않았습니다. 도서관을 연결하는 데 문제가 있습니다. – moonzai

답변

0

실수로 OpenCV tarball에 제공된 샘플 코드를 컴파일하고 해당 코드를 컴파일했습니다. 그런 다음 빌드 스크립트를 살펴본 결과 다음과 같은 명령을 발견했습니다.

g++ `pkg-config --cflags opencv` $1 -o $2 `pkg-config --libs opencv` 

실제로 스크립트입니다. $1은 .cpp 파일이고, $2은 출력 파일 인 두 번째 인수입니다. 나는 다음과 같이이 스크립트를 사용 :

./build_cv.sh opencv_test.cpp test 

참고 : 스크립트 파일 "build_cv.sh는"실행 권한을 가지고 있는지 확인하십시오. 그렇지 않다면 다음을 입력하여 권한을 변경하십시오.

chmod +x build_cv.sh 

이제 문제가 발생했습니다. 나는 첫 번째 시도에서 헤더 파일과 라이브러리의 위치를 ​​알려주고 있었다.원본 파일과 출력 파일 다음에 라이브러리의 위치를 ​​제공하기 전에 헤더의 위치를 ​​지정해야합니다. 이것은 나의 경험이다. 어쩌면 다른 사람이 코드를 컴파일하는 다른 방법을 가지고있을 수도 있습니다.

0

귀하의 링크 명령이 있습니다 -lopencv_core -lopencv_highgui -lm opencv_test.c

이것은의 잘못된 순서입니다 인수. 이유를 이해하려면 this을 읽어보십시오. 내 기존 우분투 X82 기계에이 명령을 주면

은, 그것은

당신은 "아주 잘 연결"말은 ... 아주 잘 컴파일합니다.

링크 명령이 올바르지 않기 때문에 coincidence에 의해 발생합니다.

+0

만약 내가이 우분투 x82 머신에이 명령을 내리면 아주 잘 컴파일됩니다 ... – moonzai

+0

예, 우연히도, 필자의 링크 코드가 바뀌었고, 샘플/c/build_all .sh로, 그것은이었다 g ++'PKG-구성 $ 1 -o $ 2 '의 opencv' --cflags PKG-구성 --libs opencv' 이제 연결에는 문제가 없다 (도시하지 틱있다) , 대단히 감사합니다 .... – moonzai