انجمنهای فارسی اوبونتو
کمک و پشتیبانی => نرمافزارهای فنی-مهندسی => نویسنده: robotic در 23 مهر 1391، 06:47 بظ
-
من opencv 2.4.2 را روی kubuntu 12.04.1 LTS با کمک cmake به همراه TBB نصب کردم
اما وقتی در برنامه یک پنجره باز می کنم که تصویر را نمایش دهد ارور زیر را نشان می دهد
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/dmerejkowsky/src/OpenCV-2.1.0/src/highgui/window.cpp, line 180
terminate called after throwing an instance of 'cv::Exception'
what(): /home/dmerejkowsky/src/OpenCV-2.1.0/src/highgui/window.cpp:180: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow
من ایتدا libgtk2.0-dev و pkg-config را نصب کردم سپس opencv را نصب کردم.
الان نمی دانم GTK+ 2.x را چه کار کنم آیا همان libgtk2.0-dev است؟ اگر همان است این ارور را چی کار کنم؟
-
کدت چیه؟
قبلش مطمئن شو اینها رو نصب کردی:
libavcodec-dev libavformat-dev libavutil-dev libcv-dev libcvaux-dev
libdc1394-22-dev libhighgui-dev libilmbase-dev libjasper-dev libjpeg-dev
libjpeg-turbo8-dev libjpeg8-dev libopencv-calib3d-dev libopencv-calib3d2.3
libopencv-contrib-dev libopencv-contrib2.3 libopencv-core-dev
libopencv-core2.3 libopencv-features2d-dev libopencv-features2d2.3
libopencv-flann-dev libopencv-flann2.3 libopencv-gpu2.3
libopencv-highgui-dev libopencv-highgui2.3 libopencv-imgproc-dev
libopencv-imgproc2.3 libopencv-legacy-dev libopencv-legacy2.3
libopencv-ml-dev libopencv-ml2.3 libopencv-objdetect-dev
libopencv-objdetect2.3 libopencv-video-dev libopencv-video2.3 libopenexr-dev
libraw1394-dev libswscale-dev libtiff4-dev libtiffxx0c2
libfaad-dev libgsm1-dev libogg-dev libschroedinger-dev libspeex-dev
libtheora-dev libvorbis-dev libraw1394-doc libraw1394-tools
-
چک کردم موارد زیر نصب نشده بود
libcv-dev
libcvaux-dev
libhighgui-dev
libfaad-dev
libgsm1-dev
libogg-dev
libschroedinger-dev
libspeex-dev
libtheora-dev
libvorbis-dev
libraw1394-doc
libraw1394-tools
این ها را هم نصب کردم. سپس opencv را پاک کردم.
سپس مجددا با دستورات زیر آن را نصب کردم
cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
make
make install
اما همچنان همان ارور قبلی است.
یک برنامه نوشتم که یک پنجره باز کند.
#include </home/robotics/openCV-2.4.2/include/opencv/cv.h>
#include </home/robotics/openCV-2.4.2/include/opencv/highgui.h>
#include <iostream>
int main()
{
cvNamedWindow("name");
// IplImage* img =cvLoadImage('/home/robotics/stars-5.jpg');
// cvShowImage("name", img);
//for(int i=1;i<1000,i++);
//cvReleaseImageHeader(&img);
return 0;
}
من اپن سی وی را روی ویندوز نصب کردم و چندین پروژه نوشتم.
اما در یک پروژهی باید توی اوبونتو یا کوبونتو بنویسم با Qt cmake qibuild
نمی دانم با این ارور چی کار کنم.
-
مشکل از کامپایلر بود
من با qibuild کامپایل می کردم ارور فوق را می داد
qibuild configure opencv-show
qibuild make opencv-show
امروز با gcc کامپایل کردم مشکل حل شد
gcc `pkg-config --cflags opencv` -o main main.cpp `pkg-config --libs opencv`
البته فهمیدم وقتی opencv را با cmake می سازید پوشه build سرکاری است
در واقع اپن سی وی در مسیر زیر نصب می شود
/usr/local/include/opencv2/
همچنین در لینوکس به جای
#include </home/robotics/openCV-2.4.2/include/opencv/cv.h>
#include </home/robotics/openCV-2.4.2/include/opencv/highgui.h>
باید از
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc_c.h"
استفاده کرد.
در واقع وقتی از qibuild استفاده می کردم کتابخانه را به جای این که از
/usr/local/include/opencv2/
استفاده کند از
/home/dmerejkowsky/src/OpenCV-2.1.0/src/
استفاده می کرد !!!
اینم کد برنامه اصلاح شده برای کسانی که می خواهند برای اولین بار در لینوکس یک برنامه اپن سی وی بنویسند
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc_c.h"
int main()
{
cvNamedWindow("Open",1);
IplImage* img =cvLoadImage("/home/robotics/stars-5.jpg");
cvWaitKey(0);
cvReleaseImageHeader(&img);
return 0;
}
-
مشکلم با qibuild حل شد
تو فایل CMakeLists.txt به جای
cmake_minimum_required(VERSION 2.8)
project(opencv-show)
find_package(qibuild)
qi_create_bin(opencv-show "main.cpp")
qi_use_lib(opencv-show OPENCV)
باید از
cmake_minimum_required(VERSION 2.8)
project(opencv-show)
find_package(qibuild)
qi_create_bin(opencv-show "main.cpp")
qi_use_lib(opencv-show OPENCV2_CORE OPENCV2_HIGHGUI)
استفاده کنیم.
در ضمن opencv در لینوکس دستورات راحت تری دارد شبیه بیشتر شبیه نرم افزار متلب است تا ا\ن سی وی ویندوز !!!
برنامه ی اصلاح شده جهت تست اپن سی وی لینوکس به صورت زیر است
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc_c.h"
using namespace std;
using namespace cv;
int main()
{
Mat pic;
cout << "Mat pic" << endl;
pic = imread("/home/robotics/stars-5.jpg");
cout << "imread" << endl;
namedWindow("box",1);
cout << "namedWindow" << endl;
if( !pic.data )
{
cout << "Error loading pic" << endl;
return -1;
}
imshow( "box", pic );
cout << "imshow" << endl;
cvWaitKey(0);
cout << "end wait" << endl;
return 0;
}