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

Tlya

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

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

  • Посещение

Все публикации пользователя Tlya

  1. VideoCapture

    Можете удалять тему, вопрос решился
  2. VideoCapture

    Здравствуйте! Есть всем известный код записи видео, который работает отлично: Mat frame; VideoCapture cap(0); if (!cap.isOpened()) return -1; while (true) { cap >> frame; //далее делаем с фреймом что хотим Но если использовать этот способ, чтобы сделать фото с вебки, то они получаются очень темными, т.к. камера только включается, не успевает настроиться к освещению. Пробовал таймером запускать VideoCapture каждые скажем 100мс - проблема решается, но тогда начинаются тормоза, т.к. каждые 100мс VideoCapture то включается, то выключается... как это грамотнее решить? А если использовать просто while (true), а потом выдергивать фрейм в нужный момент, то тупо виснет почему-то
  3. Помогите!Сделал всё как сказано https://wiki.qt.io/How_to_setup_Qt_a...nCV_on_Windowsошибок при сборке не былоно в результате выкидывает такое:Я понимаю что значит эта ошибка - неверная ссылка на функцию, но как это исправить? вроде же dll все подключил п.с. тему читал, не помогло
  4. Оказывается дело было так. При запуске получаем ошибку, заходим в папку, ложим в папку нужные длл и ВУАЛЯ!))
  5. Да, действительно такие файлы есть. То есть мне вместо Переделал, но всё равно что-то не так Вот сама папка с длл
  6. Так их при сборке не создается. Во-вторых, почему тогда в инструкции dll написали?
  7. Повернутое изображение

    Народ, что за прикол?) Открываю изображение через faststone image viewer оно вертикально. Если через Paint или стандартный просмотрщик винды горизонтально. Проблема в том что imwrite() тоже грузит горизонтально, что неправильно и о дальнейшей верной обработке речь не идет. Если просто пересохранить, то всё становиться норм Проще говоря - как получить метаданные из EXIF?
  8. Повернутое изображение

    Разобрался! Нашел кое-какие библиотеки Может кому-нибудь поможет #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
  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 так велика?
  10. что за ошибка?

    Спасибо большое за ответ!
  11. Подскажите, пожалуйста! Чем распознать такие цифры? Как видно, разные размеры, шрифт, поворот и небольшие искажения являются осложнениями. Какой алгоритм (кроме классификатора) можно применить? По шаблону точно не подойдет, контуры с их моментами дают результат, но много ошибок, тессеракт распознает с большими ошибками из-за наклона. Какие ещё варианты?
  12. Подскажите, наткнулся на такой вопрос. Как совместить тессеракт с опенсв? один работает только под 32, второй 64. Отдельно использовать два .ехе не вариант. Есть ли решение?
  13. Может есть какой-нибудь пример по использованию х64?
  14. эм... скачал установил, а как к студии прикрутить? обычно указывал на папку с заголовочными, с либами и дописывал нужные либы. (собственно как и с опенсв)... Бинарники OpenCV (не знаю какая разрядность, скорее всего x32 для windows.) https://sourceforge.net/projects/opencvlibrary/files/openc х64 к сожалению
  15. Подскажите еще пожалуйста, как ускорить процесс обработки картинок большого разрешения при след. алгоритме: загрузка, коррекция цвета, перевод в серое, размытие, порог, поиск контуров, апроксимация, minAreaRect для контуров с нужными свойствами, поворачивание и вырезание этих прямоугольников, закидывание их в другой Mat. Просто при разрешении 6к на 4к количество контуров может доходить до 100к, а время обработки до 2с.
  16. Когда пытаюсь пересобрать опен под 32 пишет: Ошибка LNK1112 тип компьютера модуля "x64" противоречит типу целевого компьютера "X86" А если добавляю к тесс-у опен, то уже со старта IplImage* Image = cvLoadImage("test.jpg"); Ошибка LNK2001 неразрешенный внешний символ "_cvLoadImage"
  17. Может у вас есть какой-нибудь пример по убиранию наклона?
  18. matchShapes()

    Здравствуйте! Объясните пожалуйста. Все источники пишут, что метод matchShapes() используется в купе с моментами, но каким образом если он в качестве параметров принимает только списки контуров и метод? И как их туда запихнуть? И если получится их применить, то какие моменты надо использовать, чтобы получить независимость от масштаба и поворота? (центральных или Hu-моментов?) п.с. Интересная статья) Большая часть про моменты, а потом берут и для сравнения используют просто список контуров http://robocraft.ru/blog/computervision/867.html
  19. matchShapes()

    понял, спс
  20. matchShapes()

    То есть я правильно понял, мы используем эту функцию, закидывая туда наши контуры, а она уже сама (внутри) высчитывает моменты (и Hu в том числе) для каждого контура и сравнивает их моменты? А для чего тогда cvGetCentralMoment( CvMoments* moments, int x_order, int y_order ); ?
  21. Здравствуйте!такой вопрос: создал прилагу по поиску фрагмента на картинке по шаблону 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #define CV_TM_SQDIFF 0 #include<opencv2\highgui\highgui.hpp> #include<opencv2\core\core.hpp> #include<opencv2\opencv.hpp> #include<opencv\cv.h> #include<stdio.h> using namespace cv; using namespace std; double minval, maxval; int main(int argc, const char** argv) { setlocale(LC_ALL, "Russian"); string ishod_im = "TEST.jpg"; char ish_is[100]; strcpy(ish_is, ishod_im.c_str()); IplImage* image = 0; image = cvLoadImage(ish_is, 1); string shablon_im = "X.jpg"; char ish_sh[100]; strcpy(ish_sh, shablon_im.c_str()); IplImage* templ = 0; templ = cvLoadImage(ish_sh, 1); int width = templ->width; int height = templ->height; IplImage *res = cvCreateImage(cvSize((image->width - templ->width + 1), (image->height - templ->height + 1)), IPL_DEPTH_32F, 1); cvMatchTemplate(image, templ, res, CV_TM_SQDIFF); CvPoint minloc, maxloc; cvMinMaxLoc(res, &minval, &maxval, &minloc, &maxloc, 0); cvRectangle(image, cvPoint(minloc.x, minloc.y), cvPoint(minloc.x + templ->width - 1, minloc.y + templ->height - 1), CV_RGB(0, 0, 255), 2, 8); cvShowImage("Совпадения", image); waitKey(0); return 0; } С большего все работает норм, интересует два вопроса:1. как сделать так чтобы находило более одного совпадения? (вроде как есть какой-то способ "скользящего окна", но хотелось бы знать как его реализовать. а может и не им надо пользоваться)2. как сделать чтобы в случае отсутствия совпадения не показывал ни одной рамки (сейчас прога ищет совпадения, но даже если адекватных нет выдает хоть какой-то результат (неверный))
  22. так мне ж не все непонятно, затуп конкретно буквально в нескольких строках: import cv2 import numpy as np //что за numpy? from matplotlib import pyplot as plt // as plt? //дальше понятное дело считывание, перевод в грей, изменение размера res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED) // тоже всё ясно threshold = 0.8 // визуал предлагает либо cvThreshold либо threshold loc = np.where( res >= threshold) //конструкция с перебором массива я так понимаю... как ее изобразить на ++ for pt in zip(*loc[::-1]): // откуда взялся zip cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2) //рисуем квадрат п.с. я же не все 6 дней сидел и думал над этим)) просто вспомнил на днях))
  23. Нашел по вашим ссылкам нужный код, но не получается перевести его на С++ import cv2 import numpy as np from matplotlib import pyplot as plt img_rgb = cv2.imread('mario.png') img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) template = cv2.imread('mario_coin.png',0) w, h = template.shape[::-1] res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED) threshold = 0.8 loc = np.where( res >= threshold) for pt in zip(*loc[::-1]): cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
×