Перейти к содержимому
Compvision.ru

Tlya

Пользователи
  • Количество публикаций

    63
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Tlya


  1. Подскажите, пожалуйста, чем лучше распознать слабо отличимые от фона линии, например линии на руке.

    Я понимаю что скорее всего надо применять усиливающие фильтры (или поднимать контраст), но может есть какие-то специальные алгоритмы, упрощающие жизнь?


  2. Беру этот код

    #include "opencv2/opencv.hpp"
    #include <iostream>
     
    using namespace std;
    using namespace cv;
     
    int main(){
      VideoCapture cap("test.avi");
      if(!cap.isOpened()){
        cout << "Error opening video stream or file" << endl;
        return -1;
      }
      while(1){
        Mat frame;
        cap >> frame;
        if (frame.empty())
          break;
        imshow( "Frame", frame );
        char c=(char)waitKey(25);
        if(c==27)
          break;
      }
      cap.release();
      destroyAllWindows();
      return 0;
    }
    не проходит проверку if(!cap.isOpened())
    хотя файл лежит в папке с ЕХЕ, что не так???
    Если что - работаю в QT, версия опен 3.2.0

  3. Большое спасибо!)

    Вы тут использовали функцию, можно сказать написанную вручную, а есть ли какая-нибудь опеновская готовая?

    И еще, можно ли как-то сблурить образовавшиеся при растяжении квадраты?


  4. Доброго времени!)

    Есть задача написать плеер для проигрывания видео 360. (В идеале на два глаза, но для начала пойдет и на 1 ^_^ )

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


  5. Здравствуйте!

    Есть всем известный код записи видео, который работает отлично:

    Mat frame;
    VideoCapture cap(0);
    if (!cap.isOpened())
    return -1;
    while (true)
    {
    cap >> frame;
    //далее делаем с фреймом что хотим

    Но если использовать этот способ, чтобы сделать фото с вебки, то они получаются очень темными, т.к. камера только включается, не успевает настроиться к освещению. Пробовал таймером запускать VideoCapture каждые скажем 100мс - проблема решается, но тогда начинаются тормоза, т.к. каждые 100мс VideoCapture то включается, то выключается... как это грамотнее решить?

    А если использовать просто while (true), а потом выдергивать фрейм в нужный момент, то тупо виснет почему-то


  6. Помогите!
    Сделал всё как сказано https://wiki.qt.io/How_to_setup_Qt_a...nCV_on_Windows
    ошибок при сборке не было
    но в результате выкидывает такое:
    Я понимаю что значит эта ошибка - неверная ссылка на функцию, но как это исправить? вроде же dll все подключил

    п.с. тему читал, не помогло

     

    1.PNG

    2.PNG


  7. Разобрался!

    Нашел кое-какие библиотеки

    Может кому-нибудь поможет

    #include <iostream>
    #include <libexif\exif-data.h>

    using namespace std;

    int main(){
        ExifData *ed=exif_data_new_from_file("D:\\22.JPG");
        ExifEntry *entry = exif_data_get_entry(ed, EXIF_TAG_ORIENTATION);
        char buf[1024];
        exif_entry_get_value(entry, buf, sizeof(buf));
        cout<<buf<<endl;
        system("pause");
    }

    Выводит ориентацию, от которой может плясать Mat


  8. Народ, что за прикол?) Открываю изображение через faststone image viewer оно вертикально. Если через Paint или стандартный просмотрщик винды горизонтально.

    Проблема в том что imwrite() тоже грузит горизонтально, что неправильно и о дальнейшей верной обработке речь не идет. Если просто пересохранить, то всё становиться норм

     

    2323.JPG

    Проще говоря - как получить метаданные из EXIF?


  9. Доброго времени! может кто сталкивался...

    Есть простецкий код, который норм. работает (OpenCV 3.2.0 64bit)

    int main(int argc, const char** argv) {
        PROGON();
    }

    void PROGON() {
        Mat image_pred, gray;
        image_pred = imread("D:\\222.jpg", 1);
        Mat image(image_pred.rows*0.6, image_pred.cols*0.6, CV_8UC1, Scalar(255, 255, 255));
        resize(image_pred, image, image.size(), 0, 0, 3);
        Mat beliY(image.rows, image.cols, CV_8UC1, Scalar(255, 255, 255));
        cvtColor(image, image, CV_RGB2GRAY);
        GaussianBlur(image, image, cv::Size(1, 1), 1, 0);
        threshold(image, gray, 200, 255.0, THRESH_BINARY);
        vector<vector<cv::Point> > contours;
        findContours(gray, contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cv::Point(0, 0));
        imshow("gray.jpg", gray);
    }

    *получаем ч/б картинку С ГЛАЗАМИ*

    но почему-то тот же самый код если используем в  (OpenCV 3.0.0 32bit) меняет изображение (получаем практически тёмное). Если коментим findContours(...), то всё до него работает нормально. КАК findContours() может влиять на конечное изображение? или разница между OpenCV 3.0.0 32bit и OpenCV 3.2.0 64bit так велика?

    222.jpg

    no_ok.jpg

    ok.jpg


  10. 2 часа назад, Smorodov сказал:

    Бинарники тессеракта x64 для windows.

    https://github.com/tesseract-ocr/tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows

    эм... скачал установил, а как к студии прикрутить? обычно указывал на папку с заголовочными, с либами и дописывал нужные либы. (собственно как и с опенсв)... 

    Бинарники OpenCV (не знаю какая разрядность, скорее всего x32 для windows.)

    https://sourceforge.net/projects/opencvlibrary/files/openc

    х64 к сожалению


  11. Подскажите еще пожалуйста, как ускорить процесс обработки картинок большого разрешения при след. алгоритме:

    загрузка, коррекция цвета, перевод в серое, размытие, порог, поиск контуров, апроксимация, minAreaRect для контуров с нужными свойствами, поворачивание и вырезание этих прямоугольников, закидывание их в другой Mat.

    Просто при разрешении 6к на 4к количество контуров может доходить до 100к, а время обработки до 2с.


  12. Когда пытаюсь пересобрать опен под 32 пишет:

    Ошибка    LNK1112    тип компьютера модуля "x64" противоречит типу целевого компьютера "X86"

    А если добавляю к тесс-у опен, то уже со старта

    IplImage* Image = cvLoadImage("test.jpg");

    Ошибка    LNK2001    неразрешенный внешний символ "_cvLoadImage"


  13. Подскажите, пожалуйста! Чем распознать такие цифры?

    Как видно, разные размеры, шрифт, поворот и небольшие искажения являются осложнениями.

    Какой алгоритм (кроме классификатора) можно применить?

    По шаблону точно не подойдет, контуры с их моментами дают результат, но много ошибок, тессеракт распознает с большими ошибками из-за наклона. Какие ещё варианты?

    65565.jpg


  14. То есть я правильно понял, мы используем эту функцию, закидывая туда наши контуры, а она уже сама (внутри) высчитывает моменты (и Hu в том числе) для каждого контура и сравнивает их моменты? 

    А для чего тогда 

    cvGetCentralMoment( CvMoments* moments, int x_order, int y_order ); ?
    
×