2013-11-22

Дружим Eclipse и OpenCV для C++

Окружение: ОС - Fedora 19 x86_64, Eclipse Platform Version: 4.3.1 Build id: 5fc19

Итак, для меня стало проблемой, как научить Eclipse понимать библиотеку OpenCV. Так что-бы работал IntelleSence.

Дело было так. С горем по полам я собирал проект, он компелировался но у меня постоянно были ошибки, типа [http://stackoverflow.com/questions/10803685/eclipse-cdt-symbol-cout-could-not-be-resolved]. Сразу оговорюсь, что не нужно делать сейчас то, что представлено в этой сслыке (попробуйте это, если вам не поможет мой метод).

Итак, к делу. Для начала рекомендую ознакомиться с [http://docs.opencv.org/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html]. Но опять таки только для чтения. Это поможет вам ориентироваться в том, что я буду писать ниже.

Я предполагаю, что у читателя операционная система Линукс, и пути могут немного отличаться от тех, что буду давать я. Но опытный пользователь, я думаю, разберестя куда нужно бдует перйти.

Также я предполагаю, что у читателя уже установлены библиотеки OpenCV (лично я устанавливал через yumex).

Первое. Если вы еще не запустили Делаем новый проект: File -> New -> C++ Project.
Poject name: "firstopencv". Хотя вы можете выбрать другое. Но в рамках статьи рекомендую остановиться на этом.
Project type: Executable -> Empty Project;
Toolchain: Linux GCC. Жмем Finish.

Второе. На вкладке Project Explorer выбераем дирректорию firstopencv. Жмем правой кнопкой New -> Folder, называем ее "src".
На дирректории "src" правой нопкой мишы New -> Source File (C++);
File name: firstopencv.cpp

Третье. Ставим курсок на только что созданный файл. Идем Project -> Properties.
C\C++ Build -> Tools Settings -> GCC C++ Compiler
-> Command line pattern в конец строки добавляем следующу строку `pkg-config --cflags --libs opencv` . Обращаю ваше внимание на используемые ковычки. Они должны быить именно такими (находятся на русской букве Ё).
GCC C++ Linker Command line pattern добавляем следующу строку `pkg-config --cflags --libs opencv`

Четвертое. Учим Eclipse анализировать исходные коды. В том же Project Properties идем в Preprocessor Includes -> Providers. Убераем галку с CDT GCC Built-in Compiler Settings и устанавливаем на CDT GCC Built-in Compiler Settings MinGW.
Забыл сказать C\C++ Development Tools у вас уже должны быть установлены ;)
Жмем ОК.

Пятое. Проверка.
Для наглядности, я использовал этот текст программы

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>

#include <iostream>

int main(int argc, char** argv)
{
    cv::Mat image;
    image = cv::imread(argv[1], 1);

    if(argc != 2 || !image.data)
    {
        std::cout << "No image data \n";
        return -1;
    }

    cv::namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
    cv::imshow("Display Image", image);

    cv::waitKey(0);

    return 0;
}

После компиляции, запустив приложение с путем к файлу с изображением в качестве первого параметра вы увидите изображение на экране.




2013-09-21

MonoDevelop автоматичекское форматирование исходного кода C#

    В данной статье я расскажу как настроить и использовать автоматическое форматирование исходного кода в IDE MonoDevelop для языка программирования C#.

    Я больше чем уверен, что читатель уже написал довольно много строк кода. Также уверен, что были случаи, когда приходилось вставлять части кода во вложенные структуры. И хорошо, если вложеность 2-3 уровня, и строк кода 3-4, тут клавишой Tab еще можно справиться. А вот что делать, если вложенность кода (условный оператор, например) большая да и строчек кода много. По умолчанию редкатор MonoDevelop вставит текст с таким же отступом, откуда он был скопирован. На счастье программиста MonoDevelop обладает функцие автоматического форматирования кода, нам остается только настроить "форматировщик" и научиться его вызывать.

    Итак, этап 1. Настройка форматирования кода.
    Запускаем MonoDevelop, если вы еще этого не сделали. Открываем пункт меню Tools -> Options. На левой панели разных настроек выбираем пункт Source Code\Code опцию Formatting C# source code и выбераем вкладку C# Format (справа) жмем кнопку Edit.
   В окне "Edit Profile" вы можете настроить форматирование блоков кода, как вам будет удобно. В левой части окна представлены виды конструкций, сгруппированные по категорями. Справа показан результат применения тех или иных параметров. "По играйтесь" с настройками. Я рекомендую вам настроить как требует стандарт Ecma-334.
    Настроив форматирование как нужно нажмите кнопку "ОК", для применения всех измнений.

    Этап 2. Автоматическое форматирование.
    Теперь переходим к настройке Preferences\Key Bindings в группе Edit находим пункт Format Document, выбираем его и внизу окна в поле "Edit Binding" жмем клавиши Ctrl + Alt + F. Жмем клавишу "ОК". Готово!
    Теперь нажав клавиатурное сочетание "Ctrl + Alt + F" ваш код будет крассиво отформатирован, так как вы его настроили в первом этапе.

    При желании воспользоваться форматированием кода с помощью мыши это можно выполнить выбрав пункт меню Edit -> Format -> Format Document.

2013-07-31

Цитаты о программировании и программистах

-- Один из принципов программирования: "больше кода = больше ошибок, меньше кода = меньше ошибок". Из книги Томас Кайтс, Oracle для профессионалов.

--Код всегда содержит ошибки. Одно из правил программирования

--Можно создать самолет с любыми техническими характеристиками, которые только пожелает Министерство военно-воздушных сил, если при этом не требуется, чтобы он мог летать. Вилли Мессершмидт (выдающийся немецкий авиаконструктор времен второй
мировой войны)

--"Совещания не родили ни одной великой мысли, но похоронили некоторое число идиотских....."    Фрэнсис Скотт Фицджеральд

--«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете». Стив Макконнелл.

--Мы слишком усложнили программное обеспечение и забыли главную цель. Джим и Сандра Сандфорс

--Технология — странная вещь. Одной рукой она дает вам великие дары, а другой — наносит удар в спину. С. П. Сноу (цитата из Jarman, 1992)

--Позвоните по вышеуказанному номеру и испытайте невероятное разочарование от нашей системы голосовой почты. Надпись под рекламным объявлением одной из марок обуви

--Нет ничего более невозможного, чем написать книгу, которая бы получила одобрение каждого читателя. Мигель де Сервантес

--Если индивидуальное взаимодействие с некоторой системой не проходит для пользователя легко и комфортно, то в результате этот недостаток негативным образом отражается на качестве работы всей системы, независимо от того, насколько она хороша в других своих проявлениях. Цитата из книги Раскин Д. Интерфейс. Новые направления в проектировании компьютерных систем

--Мое определение операционной системы звучит таким образом: "То, с чем приходится возиться перед тем, как начать возиться с программой.". Цитата из книги Раскин Д. Интерфейс. Новые направления в проектировании компьютерных систем

--Один человек, один компьютер. Слоган компании Apple Computer

--Хороший программист - это тот, кто смотрит в обе стороны переходя дорогу с односторонним движением. Даг Линдер

--Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код понятный человеку. Мартин Фаулер

--Отличие кодера от разработчика. Кодеры пишут код, Разработчики создают продукт. Из одного из вебинаров по программированию.

--Если индивидуальное взаимодействие с некоторой системой не проходит для пользователя легко и комфортно, то в результате этот недостаток негативным образом отражается на качестве работы всей системы, независимо от того, насколько она хороша в других своих проявлениях. Раскин Джозефф