CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

OpenCV шаг за шагом. Установка OpenCV под OC Linux

1. OpenCV шаг за шагом. Введение.
2. Установка под Windows
Установка OpenCV под OC Linux

Рассмотрим процесс установки библиотеки OpenCV под ОС Linux на примере дистрибутива Ubuntu 10.10, но с незначительными вариациями должно сработать и под другими дистрибутивами (проверялось под Debian, ALT Linux).

Для установки OpenCV нужно скачать (UPD: официальный сайт) архив с исходными текстами.
Скачаем последнюю (на данный момент) версию:
OpenCV-2.2.0.tar.bz2
Сборка проекта осуществляется с помощью CMake (требуется версия 2.6 или выше).
Можно установить CMake в виде пакета
sudo apt-get install cmake

apt-cache show cmake
говорит, что сейчас доступна версия 2.8.2

, либо из исходников. Для этого нужно скачать архив cmake-2.8.3.tar.gz с официального сайта cmake.org

сборка и установка CMake осуществляется без проблем:
tar -zxf cmake-2.8.3.tar.gz
cd cmake-2.8.3
./configure
make
make install

далее, для отображения окошек OpenCV требуется установленная библиотека GTK+ 2.x или выше, в том числе заголовочные файлы (libgtk2.0-dev)

устанавливаем:
apt-get install libgtk2.0-dev

теперь можно собрать саму библиотеку OpenCV

tar -xjf OpenCV-2.2.0.tar.bz2
cd OpenCV-2.2.0
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ./
make
make install


попробуем собрать примеры, которые идут в составе библиотеки:
cd samples/c/
chmod +x build_all.sh
./build_all.sh 

зпустим один из примеров:
./delaunay
здесь вы увидите либо красивую картинку, либо ошибку
error while loading shared libraries: libopencv_core.so.2.2: cannot open shared object file: No such file or directory

— это значит, что программа не может найти требуемые библиотеки, пропишем их путь:
$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH


здесь может выявиться ошибка:
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 /usr/src/OpenCV-2.2.0/modules/highgui/src/window.cpp, line 274
terminate called after throwing an instance of 'cv::Exception'
  what():  /usr/src/OpenCV-2.2.0/modules/highgui/src/window.cpp:274: 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
— это значит что вы забыли установить заголовочные файлы GTK+ 2.x: libgtk2.0-dev — выполните установку этого пакета и заново пересобирите OpenCV.

После установки заголовочные файлы OpenCV находятся в каталоге:
/usr/local/include/opencv

, а библиотечные файлы лежат в:
/usr/local/lib


Попробуем самостоятельно собрать программу с OpenCV:

test.cpp
//
// for testing
//
// robocraft.ru
//

#include <cv.h>
#include <highgui.h>

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
	IplImage* image=0, *dst=0;

	// имя картинки
	char filename[] = "Image0.jpg";

	// получаем картинку
	image = cvLoadImage(filename, 1);

	printf("[i] image: %s\n", filename);
	assert( image != 0 );

	// покажем изображение
	cvNamedWindow( "image");
	cvShowImage( "image", image );

	// ждём нажатия клавиши
	cvWaitKey(0);

	// освобождаем ресурсы
	cvReleaseImage(& image);
	cvReleaseImage(&dst);

	// удаляем окна
	cvDestroyAllWindows();
	return 0;
}


Makefile
CC 		:= g++
CFLAGS 		:= -I/usr/local/include/opencv -L/usr/local/lib
OBJECTS 	:= 
LIBRARIES 	:= -lopencv_core -lopencv_imgproc -lopencv_highgui

.PHONY: all clean

all: test

test: 
	$(CC) $(CFLAGS) -o test test.cpp $(LIBRARIES)
	
clean:
	rm -f *.o


остаётся выполнить команду
make

и получить исполняемый файл test

результат:


Ссылки:
cmake.org
opencv.willowgarage.com/wiki/InstallGuide_Linux
opencv.willowgarage.com/wiki/CompileOpenCVUsingLinux
  • +1
  • 5 февраля 2011, 13:20
  • noonv

Комментарии (13)

RSS свернуть / развернуть
+
+1
При установке на Ubuntu 11.04 Natty Narval появляется ошибка
../../lib/libopencv_highgui.so.2.2.0: undefined reference to `cvCreateCameraCapture_V4L(int)'


Вот найденное решение:
1. Заходим в папку OpenCV-2.2.0/modules/highgui/src
2. В файле cap.cpp
заменяем строчку 174
#if defined (HAVE_CAMV4L) || defined (HAVE_CAMV4L2)

на
#if defined (HAVE_CAMV4L) 

3. В файле cap_v4l.cpp
заменяем строчку 217
#include <linux/videodev.h>

на
#ifdef HAVE_CAMV4L 
#include <linux/videodev.h> 
#endif 

Пруфлинк

4. Пересобираем.
avatar

lfway

  • 28 мая 2011, 09:31
+
0
Вот блин! Теперь не работает камера! Что-то всё не так на 11.04…
test: test.cpp:10: int main(int, char**): Assertion `capture' failed.
Аварийный останов
avatar

lfway

  • 28 мая 2011, 15:01
+
0
Здрасти все!
У меня fedora 15 и я имел схожие проблемы:

1) error: 'ptrdiff_t' does not name a type
Решение нашел в сети:
добавить
using std::ptrdiff_t;
в
OpenCV-2.2.0/include/opencv/cxcore.hpp

2) Отсутствует linux/videodev.h
Решение, которое помогло мне:
а) Установить libv4l libv4l-devel
yum install libv4l libv4l-devel;

б) Сделать симлинк
ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h
ну или в файле cap_v4l.cpp строчку
#include <linux/videodev.h>
заменить на
#include <libv4l1-videodev.h>

ps: для других дистрибутивов думаю будет аналогично.
avatar

xhd

  • 7 июня 2011, 23:42
+
0
Нашлась и для второй проблемы нашлась ссылочка
В ней:
linux/videodev.h is now in libv4l1-videodev.h in «ubuntu 11.04» change this #include in «opencv/modules/highgui/src/cap_libv4l.cpp»
avatar

xhd

  • 7 июня 2011, 23:53
+
0
Ещё заметочка:
Чтобы не вбивать каждый раз сточку $ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
в консоль, можно вбить в .bashrc
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
avatar

lfway

  • 28 мая 2011, 11:13
+
0
без этого можно обойтись, если прописать в Makefile в качестве флагов компилятора вот такую строчку:
-I/usr/local/include/opencv -L/usr/local/lib -Wl,-rpath,/usr/local/lib
avatar

admin

  • 28 мая 2011, 11:18
+
0
Помогите пожалуйста подружить python с opencv on MacOSLeopard, opencv собрал ( cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON), import cv не работает, может еще пути какие-то нужно указать.
Спасибо!
avatar

ArtemArt

  • 14 декабря 2011, 10:59
+
0
Помогите пожалуйста подружить python с opencv on MacOSLeopard, opencv собрал ( cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON), import cv не работает, может еще пути какие-то нужно указать.
Спасибо!

+PS: экспортнул PYTHONPATH="/usr/local/lib/python2.7/site-packages/:$PYTHONPATH", но увы выдает обшибку ->
>>> import cv
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/cv.py", line 1, in <module>
    from cv2.cv import *
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/cv2.so, 2): no suitable image found.  Did find:
	/usr/local/lib/python2.7/site-packages/cv2.so: mach-o, but wrong architecture


Подскажите как быть?!
avatar

ArtemArt

  • 14 декабря 2011, 12:49
+
0
при запуске Makefile пишет
make: Цель `all' не требует выполнения команд.
avatar

velodron

  • 21 февраля 2013, 01:03
+
0
Спасибо за подробную инструкцию!
Ставил opencv-2.4.5 на малинку, все ок
Еще пользовался этим (может поможет таким же нубам как я)
www.raspberrypi.org/phpBB3//viewtopic.php?f=84&t=36120
https://gist.github.com/jonatw/5524844
avatar

Alexander_35

  • 6 августа 2013, 07:35
+
0
Добрый день.
Читаю ваш блог и параллельно знакомлюсь Qt.
Хотел бы поделиться, что для запуска программ в Qt необходим следующий файл проекта (name.pro), вместо Makefile описанного выше:

TEMPLATE = app
TARGET =
DEPENDPATH += /usr/local/lib
INCLUDEPATH += /usr/local/include/opencv

LIBS += -lopencv_core
LIBS += -lopencv_imgproc
LIBS += -lopencv_highgui

# Input
SOURCES += main.cpp

П.С. Огромное спасибо за блог!
avatar

Trouyan

  • 21 июня 2014, 04:22
+
0
Тестовая программа с ошибкой.
В исходнике чтение производится из файла Image0.jpg, а не из параметра командной строки. Надо скоректировать либо исходник либо описание к нему и скриншот.

И ещё один момент в Linux для названия исполняемого файла «test» лучше не использовать. Такая программа уже есть и она стандартная. Но это мелочи конечно.
avatar

boscholeg

  • 11 августа 2014, 17:00
+
0
А что значат эти строки:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ./
avatar

assvard

  • 3 октября 2014, 16:21

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.