Понадобилось работать с камерами с разрешением 1280×960 и более. При работе через встроенную библиотеку OPenCV (DirectDraw) возникли определенные проблемы с быстродействием и капризность к камерам, часть тестовых камер HD вообще не заработали.

Решил попробовать работать с библиотекой videoInput которую можно взять здесь.

Но в комплекте исходники и собранные библиотеки под VC2005,VC2008,Dev-C++,CW. Под Mingw32 в комплекте нет.

Поиски в Google принесли результат: библиотека videoInput скомпилированная MinGW 4.4.0 DW2, спасибо Kronen, автору Qt-OpenCv лежит здесь.

Для работы с библиотекой под MinGW32 я поступил следующим образом:

  • заголовочный файл videoInput.h я поместил в:  c:\dev\OpenCV-2.2.0\3rdparty\videoInput\Include\
  • саму библиотеку для MinGW32 и все дополнительные библиотеки в: c:\dev\OpenCV-2.2.0\3rdparty\videoInput

Continue reading »

 

Сегодня будем скрещивать:

Все устанавливаемые библиотеки (кроме Qt)я держу в папке C:\dev это на ваш выбор.

Установка QtSDK.

Все делаем по умолчанию.

Установка CMake.

Никаких сложностей в себе не таит. Единственное не забыть включить добавление путей в переменную PATH.

Continue reading »

 

Хотел-бы поделиться функцией преобразования IplImage в QImage:

// Эта функция копирует IplImage 8бит, 3 канала в Qt QImage
// не выделяет новый размер для входного QImage
// Для неё нужно создать входной QImage нужного размера
int IplCopyToQImage(IplImage *img,QImage &qimg)
{
     if (!img) return 1;
     int minw = std::min(img->width,qimg.width());
     int minh = std::min(img->height,qimg.height());
     if (minw == 0 || minh == 0) return 2;
 
     for (int y = 0;y < minh;y++)
     {
          uchar *ptr = (uchar*)(img->imageData + y*img->widthStep);
          QRgb *ptrDst = (QRgb*)(qimg.scanLine(y));
 
          for (int x = 0;x<minw ;x++)
          {
               int b = ptr[3*x];
               int g = ptr[3*x+1];
               int r = ptr[3*x+2];
               *ptrDst=qRgb(r,g,b);// opt:: using scanline here
               ptrDst++;
          };
     };
 
     return 0;
}
 
// Эта функция сама пересоздаст нужных размеров QImage
int IplToQImage(IplImage *img,QImage &qimg)
{
     if (img == 0) return 1;
 
     int w = img->width;
     int h = img->height;
 
     qimg = QImage(img->width,img->height,QImage::Format_RGB32);
 
     return 1+IplCopyToQImage(img,qimg);
}

Continue reading »

 

Скачиваем отсюда: cppref.qch и libstdc++-v3.qch.

Копируем куда-нибудь, затем идем в Tools -> Options -> Help, на вкладке Documentation делаем Add.

Если сразу не заработает, применяем старый трюк: удаляем все доки из той же вкладки, идем на вкладку Filters, удаляем все фильтры, перезагружаем Qt Creator. Снова дабавляем новые доки в Help.

Кстати, контекстный поиск по F1 работает в справке по STL, но не в справке по C++. Index и Content работают и там и там.

 

Copy article from this.

So I’ve successfully compiled and built the QT framework on my Windows Laptop using MinGW C/C++ compiler and installed QT Creator 0.9 alpha as my IDE. I originally got complimation working with Eclipse but opted for QT Creator as it looks handy since it made especially for QT.

I am not going to go straight into coding without designing my program first, what is needed etc so I decided I’d be best working out how to do serial I/O. Serial I/O is very simple on Linux since everything on Linux is a file! /dev/ttySxx is usually the file associated with the serial charactor device. But this is no good on my Windows PC so I searched for a POSIX based Serial I/O class or library. Luckly a POSIX library for Serial Comm was developed for QT. The project is located at http://qextserialport.sourceforge.net/. I downloaded version 1.1 to see how easy it would be to do serial communication. Continue reading »

 

У меня модель по умолчанию возвращает дату в формате «M/d/yy», а хотелось бы «dd.MM.yyyy».

Для отображения даты можно использовать следующий наследный класс:

QCustomSqlTableModel::QCustomSqlTableModel(QObject *parent)
    : QSqlTableModel(parent)
{
}

QVariant QCustomSqlTableModel::data(const QModelIndex &index, int role) const
{
    QVariant value = QSqlTableModel::data(index, role);
    if (value.isValid() && role == Qt::DisplayRole) {
        QDate dat=value.toDate();
        if(dat.isValid())
            return value.toDate().toString("dd.MM.yyyy");
    }

    return value;
}

Если это можно сделать иначе, то посоветуйте.

 

Столкнулся с проблемой вывести поле ввода даты с выпадающим календарем. Оказалось что начиная с Qt 4.4 это уже не проблема! Но есть одна хитрость, если нам нужен в выводимом календаре первым днем понедельник, то поможет такой вариант:

// Если вы не включили попап для поля в дизайнере, можно сделать это так
// ВАЖНО сделать это до назначения виджета вашему полю

ui->dClientDate->setCalendarPopup(true);

QCalendarWidget* cw = new QCalendarWidget();
cw->setFirstDayOfWeek(Qt::Monday);
ui->dClientDate->setCalendarWidget(cw);
 

Сегодня пытался разобраться как подключиться к базе MySQL из Qt.

В общем-то это даже не проблема, а скорее «характерная» особенность...

Все эксперименты проводил под qt-sdk-win-opensource-2009.03.1 Continue reading »

© 2011 ADTL Blog Suffusion theme by Sayontan Sinha