Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
Сборка OpenCV и все что с этим связано
lunixoid
Добавлено 22.01.2012 22:47 Редактировалось 22.01.2012 23:31
0
Сообщение: 1
lunixoid
0

Пункты: 1050
Регистрация: 18.01.2012
Пол: Мужчина
Из: Ростов-на-Дону
Нашел в нете мануал как собрать OpenCV для arm с помощью cmake-gui.
При сборке ругнулось на fsbl(), вроде больше не было проблем.

Сборка и установка прошли успешно, но при попытке скомпилить обычный пример выводит кучу ошибок, где на каждый *.hpp файл в папке opencv/include ругается чуть ли не на каждую строчку, например:
/usr/local/include/opencv2/core/core.hpp:80: error: template declaration of 'cv::CV_EXPORTS cv::Size_'
/usr/local/include/opencv2/core/core.hpp:81: error: template declaration of 'cv::CV_EXPORTS cv::Point_'
/usr/local/include/opencv2/core/core.hpp:82: error: template declaration of 'cv::CV_EXPORTS cv::Rect_'
/usr/local/include/opencv2/core/core.hpp:83: error: template declaration of 'cv::CV_EXPORTS cv::Vec'
/usr/local/include/opencv2/core/core.hpp:84: error: template declaration of 'cv::CV_EXPORTS cv::Matx'
/usr/local/include/opencv2/core/core.hpp:93: error: aggregate 'cv::CV_EXPORTS cv::MatExpr' has incomplete type and cannot be defined
/usr/local/include/opencv2/core/core.hpp:94: error: aggregate 'cv::CV_EXPORTS cv::MatOp_Base' has incomplete type and cannot be defined
/usr/local/include/opencv2/core/core.hpp:95: error: aggregate 'cv::CV_EXPORTS cv::MatArg' has incomplete type and cannot be defined
/usr/local/include/opencv2/core/core.hpp:96: error: aggregate 'cv::CV_EXPORTS cv::MatConstIterator' has incomplete type and cannot be defined
/usr/local/include/opencv2/core/core.hpp:98: error: template declaration of 'cv::CV_EXPORTS cv::Mat_'
/usr/local/include/opencv2/core/core.hpp:99: error: template declaration of 'cv::CV_EXPORTS cv::MatIterator_'
/usr/local/include/opencv2/core/core.hpp:100: error: template declaration of 'cv::CV_EXPORTS cv::MatConstIterator_'
/usr/local/include/opencv2/core/core.hpp:101: error: template declaration of 'cv::CV_EXPORTS cv::MatCommaInitializer_'
/usr/local/include/opencv2/core/core.hpp:103: error: expected initializer before 'fromUtf16'
/usr/local/include/opencv2/core/core.hpp:104: error: expected initializer before 'toUtf16'
/usr/local/include/opencv2/core/core.hpp:106: error: expected initializer before 'format'
/usr/local/include/opencv2/core/core.hpp:107: error: expected initializer before 'tempfile'
/usr/local/include/opencv2/core/core.hpp:122: error: function definition does not declare parameters
/usr/local/include/opencv2/core/core.hpp:161: error: expected ',' or '...' before '&' token
/usr/local/include/opencv2/imgproc/imgproc.hpp:599: error: two or more data types in declaration of 'threshold'

ошибок крайне много, выкладывать нет смысла :D
Под собранную обычным путем opencv в ubuntu тестовая прога компилится, а для arm никак.
Makefile:
CC := /home/lunixoid/Wark/cross-gcc/arm-2007q1/bin/arm-none-linux-gnueabi-g++
CFLAGS := -I /usr/local/include/opencv2 -L /usr/local/lib
OBJECTS :=
LIBRARIES := -lopencv_core -lopencv_imgproc -lopencv_highgui

all: test

test:
$(CC) $(CFLAGS) -o test test.cpp $(LIBRARIES)

clean:
rm -f *.o
В проге просто пытаюсь подключить core/core.hpp imgproc.hpp highgui.hpp
Может неправильно собрал OpenCV или может зря вышел за пределы образа debian виртуалки? :D
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 22.01.2012 23:43 Редактировалось 22.01.2012 23:43 Сообщение: 2
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Нашел в нете мануал как собрать OpenCV для arm с помощью cmake-gui.


Бросьте вы эти извращения :) opencv есть в buildroot-2011.11 (последний релиз на данный момент)
Спуститься к концу Подняться к началу
Персональная информация
lunixoid
Добавлено 23.01.2012 00:24 Редактировалось 23.01.2012 14:48 Сообщение: 3
lunixoid
0

Пункты: 1050
Регистрация: 18.01.2012
Пол: Мужчина
Из: Ростов-на-Дону
Цитата

Бросьте вы эти извращения :) opencv есть в buildroot-2011.11 (последний релиз на данный момент)

Некоторые не учатся на своих ошибках :D

Собирается buildroot как описано здесь http://wiki.starterkit.ru/buildroot ?
А как потом это загоняется на плату? :)

Добавочный вопрос - последний buildroot качается отседа http://buildroot.uclibc.org/downloads/snapshots/ ?)

Исправил ошибку из первого поста :D
Ошибка была банальна. Теперь другая:
/lib/libcore_opencv.so: undefined reference 'clock_gettime'
Опять ступор ))
Спуститься к концу Подняться к началу
Персональная информация
lunixoid
Добавлено 25.01.2012 17:43 Сообщение: 4
lunixoid
0

Пункты: 1050
Регистрация: 18.01.2012
Пол: Мужчина
Из: Ростов-на-Дону
Изврат, извратом, а собрать своими руками Opencv 2.3 для ARM удалось, проекты компилятся и успешно запускаются на плате. Для экономии места, на плату скопировал только либы.
Новый опыт в копилку :)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.01.2012 20:54 Сообщение: 5
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Новый опыт в копилку :)

пишите правильнее: "Новый опыт в мою копилку :)"

Цитата
Ошибка была банальна

потом в этот тред заглянут другие пользователи в надежде найти решение этих грабель и шиш.. для них решения нет..

Цитата
А как потом это загоняется на плату? :)

"загоняется" на плату кита любым доступным способом:
- запустить процедуру апдейта рутовой из юбут (при наличии там правильных команд)
- рутовая архивируется и распаковывается на место будущей рутовой или на накопитель с которого планируется грузить рутовую
- к хосту подмонтируется накопитель (usb-flash, sd) и на нее копируется прямо с хоста..
читайте форум - там есть ответы.. :/

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
lunixoid
Добавлено 27.01.2012 13:03 Редактировалось 27.01.2012 13:06 Сообщение: 6
lunixoid
0

Пункты: 1050
Регистрация: 18.01.2012
Пол: Мужчина
Из: Ростов-на-Дону
Цитата

потом в этот тред заглянут другие пользователи в надежде найти решение этих грабель и шиш.. для них решения нет..

Тоже об этом подумал :)
Решилось это тем, что при компиляции программы нужно указывать путь не до /usr/local/include/opencv2, а только до /usr/local/include/ ,не нужно было указывать в какой папке лежат либы, ну и просто их указать, т.е. новый Makefile выглядит так:
Makefile:
CC := /home/lunixoid/Wark/cross-gcc/arm-2007q1/bin/arm-none-linux-gnueabi-g++
CFLAGS := -I /usr/local/include
OBJECTS :=
LIBRARIES := -lopencv_core -lopencv_imgproc -lopencv_highgui

all: test

test:
$(CC) $(CFLAGS) -o test test.cpp $(LIBRARIES)

clean:
rm -f *.o

Если начент ругаться, что какие-либо функции undefined reference,т.е. не известны и которые не входят в opencv, нужно просто добавить либу, содержащую эту функцию. У меня это было -lpthread

Сейчас другая проблема. Ядро собрано с поддержкой uvc (сконфигурировал в menuconfig), загрузил по tftp, при старте появляются /dev/video0 и /dev/video1. В opencv получать с камеры изображение просто:
CvCapture* capture = cvCreateCameraCapture(0);

Но в capture все время NULL, т.е. камеру не находит. Точную модель камеры сказать не могу, но она точно поддерживает uvc, под убунтой этот же код получает картинку с камеры и сохраняет в файл.

p.s. Теги кода не работают чет
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux