انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: مشکل opencv با GTK+  (دفعات بازدید: 3823 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین robotic

  • Full Member
  • *
  • ارسال: 176
  • جنسیت : پسر
مشکل opencv با GTK+
« : 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 است؟ اگر همان است این ارور را چی کار کنم؟

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19720
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : مشکل opencv با GTK+
« پاسخ #1 : 24 مهر 1391، 12:13 ق‌ظ »
کدت چیه؟
قبلش مطمئن شو این‌ها رو نصب کردی:
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
« آخرین ویرایش: 24 مهر 1391، 12:42 ق‌ظ توسط دانیال بهزادی »
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین robotic

  • Full Member
  • *
  • ارسال: 176
  • جنسیت : پسر
پاسخ : مشکل opencv با GTK+
« پاسخ #2 : 24 مهر 1391، 07:53 ب‌ظ »
چک کردم موارد زیر نصب نشده بود

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

نمی دانم با این ارور چی کار کنم.

آفلاین robotic

  • Full Member
  • *
  • ارسال: 176
  • جنسیت : پسر
پاسخ : مشکل opencv با GTK+
« پاسخ #3 : 25 مهر 1391، 05:01 ب‌ظ »
مشکل از کامپایلر بود

من با 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;
}
« آخرین ویرایش: 25 مهر 1391، 05:10 ب‌ظ توسط robotic »

آفلاین robotic

  • Full Member
  • *
  • ارسال: 176
  • جنسیت : پسر
پاسخ : مشکل opencv با GTK+
« پاسخ #4 : 25 مهر 1391، 08:43 ب‌ظ »
مشکلم با 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;
}