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

Goldz

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

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

  • Посещение

Репутация

0 Новичек

О Goldz

  • Звание
    Новичок
  1. Спасибо за помощь Все заработало, значение 0.5
  2. #include <opencv\cv.h> #include <opencv\highgui.h> #include <stdlib.h> #include <stdio.h> using namespace cv; IplImage* image = 0; IplImage* templ = 0; CvRect rect; int main(int argc, char* argv[]) { CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY); assert( capture ); //cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 320);//1280); // cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 240);//960); IplImage* image=0, *res=0; // шаблон char* filename2 = argc >= 3 ? argv[2] : "D:/OpenCV/Image1.jpg"; templ = cvLoadImage(filename2,1); assert( templ != 0 ); cvNamedWindow("Match", CV_WINDOW_AUTOSIZE); // размер шаблона int width = templ->width; int height = templ->height; while(1) { image = cvQueryFrame( capture );// получаем кадр cvFlip(image, image, 0);//отображаем зеркально cvFlip(image, image, 1);//отображаем зеркально //ROI CvRect rect = cvRect(0, 0, 120, 240); // Определение прямоугольника для ИОР cvSetImageROI(image, rect); // Установка ИОР IplImage *res = cvCreateImage( cvSize( (rect.width-templ->width+1), (rect.height-templ->height+1)), IPL_DEPTH_32F, 1 ); cvMatchTemplate(image, templ, res, CV_TM_SQDIFF_NORMED);// сравнение изображения с шаблоном // определение лучшее положение для сравнения // (поиск минимумов и максимумов на изображении) double minval, maxval, threshold = 0.8; CvPoint minloc, maxloc; cvMinMaxLoc(res, &minval, &maxval, &minloc, &maxloc, 0); // нормализуем cvNormalize(res,res,1,0,CV_MINMAX); printf("minloc= %d, maxloc= %d\n", minloc,maxloc ); // выделим область прямоугольником cvRectangle(image, cvPoint(minloc.x, minloc.y), cvPoint(minloc.x+templ->width-1, minloc.y+templ->height-1), CV_RGB(255, 0, 0), 1, 8); cvShowImage("Match", image); // ждём нажатия клавиши cvWaitKey(33); } // освобождаем ресурсы cvReleaseImage( &image ); cvReleaseImage( &templ ); cvReleaseImage( &res ); cvDestroyAllWindows(); return 0; } Вывожу значения minloc и maxloc в консольное окно. При нахождении объекта выводятся стабильные значения. При отсутствии объекта значения выводятся то же, но значения колеблются Самое противное что значения могут совпадать как при наличии объекта так и без него
  3. Очень прошу, давайте перейдем с намеков на понятный многим язык С++ Я не теоретик, я практик
  4. Всем доброго здравия Написал процедуру поиска по шаблону в видео с камеры Все работает, но есть проблема При нахождении шаблона на изображении он выделяется красным прямоугольником, а если шаблона нет то прямоугольник все равно есть и хаотично передвигается по экрану Как программно определиться, что шаблон найден?
  5. координаты

  6. Всем спасибо!!!! Промучался три дня, но дело сдвинулось с мертвой точки Вывести видео в окно на форме не получилось, да и мне оно вообще то это не нужно Пошел по другому пути. Создается приложение с формой, а из нее запускается вывод видео в отдельное окно Такая схема позволяет как управлять окном вывода(размер, вид и т.д.), так и передавать данные из окна на форму Выкладываю код, может кому пригодится(три дня экономии)MainOCV.rar Осталось организовать поиск объекта по образцу и определение относительных координат объекта Может быть кто решал такие проблемы, поделитесь наработками
  7. Написал в stdafx.h void df(void) { // } По кнопке на форме вызываю df(); Компилятор говорит: 1>stdafx.obj : error LNK2005: "void __clrcall df(void)" (?df@@$$FYMXXZ) already defined in newsForm.obj В newsForm.cpp упоминаний о df нет Направьте на путь истинный !!!
  8. Еще вопрос В каком файле проекта и как нужно объявить функцию чтобы ее было видно из любой точки программы Я в основном cpp сделал так - rem // ff22.cpp : main project file. #include "stdafx.h" #include "Form1.h" void rem(); using namespace ff22; [STAThreadAttribute] int main(array<System::String ^> ^args) { // Enabling Windows XP visual effects before any controls are created Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // Create the main window and run it Application::Run(gcnew Form1()); return 0; } void rem() { /////////исполняемый код } Пытаюсь вызвать с формы кнопкой, дает ошибку при сборке d:\opencv\ff22\ff22\Form1.h(80): error C3861: 'rem': identifier not found
  9. Всем мое почтение Много лет пишу на С для Arduino, а там форм нет. Дурная голова решила создать устройство, которое должно сверлить отверстие в определенном месте, но прежде это место надо найти Решил попробовать OpenCV + VS2010 C++....... Но все это прелюдия Теперь крик души!!!!!!! Помогите Есть код из Инета Создал консольное приложение, добавил main.cpp #include <opencv\cv.h> #include <opencv\highgui.h> using namespace cv; int main() { Mat image; VideoCapture cap; cap.open(0); namedWindow("window",1); while(1) { cap>>image; imshow("window",image); waitKey(33); } return 0; } Все отлично работает Но как сделать вывод в окно на форме Я прочитал всю ветку, ну туп... Если кто решит мне помочь, прошу втолковать с самого начала Создал проект Windows Forms Application, что делать дальше что бы при исполнении появилось видео с видеокамеры USB в окне на форме Буду много благодарен
  10. вывод видео в форму

×