Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
#1

Работа с OpenCV, нахождение параметров обьектов - C++

15.10.2015, 11:42. Просмотров 865. Ответов 19
Метки нет (Все метки)

Здравствуйте,
Мне нужно сделать один проект по учебе, речь идет о програмированнии одной программки.
Задача следующая: в распоряжении у меня индустриальная камера и лазер, нужно 'сделать', прибор для измерения параметров обьекта(Ширина, углубления и выпуклости). К сожалению я начинающий програмист, и впервый раз столкнулся с библиотеками OPENCV, но думаю это подходит как ни что лучше.
Из уже мною изучинного и прочитанного, я написал простую программку для отображения видео с камеры и нахождения краев обьекта,к сожалению до лазера я еще не дошел, не знаю как выйти на него, и как его подключить. Был бы очень признателен за совет
Мой главный вопрос заключается в том, как измерить расстояние от края до края с и вывести данные на экран, и сохранить в каком нибудь файле. Спасибо за ИДЕИ и дополнения в программку


C++
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
#include "opencv2/opencv.hpp"
 
using namespace cv;
 
int main()
{
    int c;
    Mat img;
    VideoCapture cap(0);
    while (true)
    {
        cap >> img;
 
        Mat edges;
        cvtColor(img, edges, CV_BGR2GRAY);
 
        Canny(edges, edges, 30, 60);
        imshow("Grau", edges); //края
        imshow("Norm", img); //обычное видео с камеры
        c=waitKey(1);
 
         if(c==27) // ESC закрыть окно
         break;
    }
          
 
    return 0;
}
Добавлено через 6 минут
Также вычитал про функцию ROI (Region Of Interest — регион интересов — интересующая область изображения), что бы к примеру выделить только ту область где лазер попадает на обьект и уже дальше работать только с жтим участком. Не уверен только что это пойдет для работы с видеокамерой

Добавлено через 8 минут
стоит уточнить, что обьект должен по всей длинне быть имерин, тоесть проверяется ширина, толщина, выпуклости на всем участке. Тоесть в качестве обьекта будет использован кусок пенопласта с обределенной геометрией, который будет расположен перед ккамерой и двигаться в определенном направлении, как по транспортной ленте

Добавлено через 57 минут
работаю с VS2010 и библиотеками OPENCV231. немного устарелые но так уж получилось
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2015, 11:42     Работа с OpenCV, нахождение параметров обьектов
Посмотрите здесь:

C++ работа с функциями со сменным числом параметров
Работа функции с переменным числом параметров C++
C++ Работа с функциями, возвращающими значения. Передача параметров по значению
Работа с функциями, возвращающими значения. Передача параметров по значению C++
Работа с функциями, возвращающими значения. Передача параметров по значению C++
«Работа с функциями, возвращающими значения. Передача параметров по значению» C++
C++ Linux [OpenCV] Выделение кругов и работа с ними
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Почтальон
Модератор
311 / 237 / 38
Регистрация: 22.03.2015
Сообщений: 1,857
Завершенные тесты: 1
15.10.2015, 19:21     Работа с OpenCV, нахождение параметров обьектов #2
Цитата Сообщение от MValeriy Посмотреть сообщение
К сожалению я начинающий програмист
Даже начинающий программист не допускает ошибок в названии своей профессии.
Цитата Сообщение от MValeriy Посмотреть сообщение
к сожалению до лазера я еще не дошел, не знаю как выйти на него, и как его подключить. Был бы очень признателен за совет
Мой главный вопрос заключается в том, как измерить расстояние от края до края с и вывести данные на экран, и сохранить в каком нибудь файле.
Для этого нужно иметь документацию по оборудованию, чтобы хоть с чего-то начать. Есть она у вас ?
По поводу вычисления размеров. Раз учились в школе, тогда должны знать, как вычислить расстояние, зная время и скорость.
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
16.10.2015, 09:15  [ТС]     Работа с OpenCV, нахождение параметров обьектов #3
Цитата Сообщение от Почтальон Посмотреть сообщение
Даже начинающий программист не допускает ошибок в названии своей профессии.
) к сожалению или к счастью, програММирование не является моей профессией, по роду деятельности, точнее сказать по необходимости столкнулся.
Сожалею если обидел или оскорбил когото этой ошибкой

Добавлено через 13 часов 10 минут
Цитата Сообщение от Почтальон Посмотреть сообщение
Для этого нужно иметь документацию по оборудованию, чтобы хоть с чего-то начать. Есть она у вас ?
Камера Dragonfly2 модель DR2-08S2M-EX-CS :
http://ptgrey.com/dragonfly2-08-mp-m...ad-sony-icx204
Расстояние между камерой и лазером приблизительно 205mm, до обьекта 252mm(может еще незначительно измениться). Угол триангулиции 39-40 градусов.

Добавлено через 6 минут
Цитата Сообщение от Почтальон Посмотреть сообщение
По поводу вычисления размеров. Раз учились в школе, тогда должны знать, как вычислить расстояние, зная время и скорость.
длинна как таковая , не является самым важным обьектом исследования, хотя тоже не исключена. Важнее всего ширина обьекта и измерение поверхности, выпуклости, вогнутости.
в школе много чему учили, и даже тем как пользоваться линейкой) но как с помощью камеры вычислить (расчитать ) а еще и запрограммировать, увы нет. Поэтому и обращаюсь к Вам, в надежде на хоть какую то помощь

Добавлено через 20 минут
Забыл указать что Расстояние от Камеры до Обьекта где то между 320mm 370mm (точнее могу сказать лишь когда камера с лазером будут закреплены).
Почтальон
Модератор
311 / 237 / 38
Регистрация: 22.03.2015
Сообщений: 1,857
Завершенные тесты: 1
16.10.2015, 10:52     Работа с OpenCV, нахождение параметров обьектов #4
Лазер пускает световые пучки с определенной скоростью (постоянной). Вот нужно вычислить время когда сигнал вернется обратно и отсюда уже вычислять расстояние. Это принцип действия эхолота
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
16.10.2015, 15:50  [ТС]     Работа с OpenCV, нахождение параметров обьектов #5
Цитата Сообщение от Почтальон Посмотреть сообщение
Лазер пускает световые пучки с определенной скоростью (постоянной). Вот нужно вычислить время когда сигнал вернется обратно и отсюда уже вычислять расстояние. Это принцип действия эхолота
Спасибо Вам конечно за советы, но так я далеко не уйду. тем более вы по всей видимости не правильно поняли цели этой работы. мне не нужно изобретать эхолот или лазерный дальнометр.
Работа основывается на Методе триангуляции, именно поэтому лазер и камера. Лазер вообще используется в качестве указателя.
Меня интересует вопрос программирования!
с помощью функции "Canny(edges, edges, 10, 100);" я получаю давольно таки хорошее изображение, особенно если оно подсвечивается лазером, убрать все ШУМы, и каким либо образом определив координаты краев(они отчетливо видны,) возможно можно было бы расчитать ширину. увы пока я не знаю как реализовать это
Почтальон
Модератор
311 / 237 / 38
Регистрация: 22.03.2015
Сообщений: 1,857
Завершенные тесты: 1
17.10.2015, 10:34     Работа с OpenCV, нахождение параметров обьектов #6
Возможно нужно алгоритмы распознавания изображения использовать. Иначе как определить выпуклую поверхность? Игра света порой творит чудеса, и можно накосячить
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
21.10.2015, 13:38  [ТС]     Работа с OpenCV, нахождение параметров обьектов #7
Друзья, задача немного упростилась, но легче увы от этого не стало. Во первых есть вся необходимая геометрия(я надеюсь что вся), тоесть камера, обьектив, растояние от камеры до лазера, расстояние от лазера до поверхности и соответственно от камеры до поверхности.
Задача упростилась до нахождения ширины обьекта, и сравнения этих величин с Заданными. При откланениях выводить на экран, и проверять дальше.
Но теперь обьект движется, тоесть скажем лента с определенной толщиной и длинной Х метров.
С помощью вышеупомянотого, я довольно хорошо нахожу границы обьекта, особенно это хорошо заметно при включенном лазере(см Картинку) Подскажите как найти ширину? в частности не знаю как это написать в С++. Погрешность измерения пока особой роли не играет.
Помогите кто чем может)
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
21.10.2015, 13:48  [ТС]     Работа с OpenCV, нахождение параметров обьектов #8
Работа с OpenCV, нахождение параметров обьектов
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
21.10.2015, 13:54  [ТС]     Работа с OpenCV, нахождение параметров обьектов #9
"быть может я ошибаюсь с детектором границ ''Canny''?"
с именно с такой мыслью я просидел почти неделю , насмотрелся и начитался всяких туториумов, и добавил оператора лапласса и построение Гистограммы(см Картинку). Смотрится хорошо, но я не на сколько не приблизился к своей цели
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
21.10.2015, 13:55  [ТС]     Работа с OpenCV, нахождение параметров обьектов #10
Работа с OpenCV, нахождение параметров обьектов
OstapBender
582 / 520 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
27.10.2015, 19:05     Работа с OpenCV, нахождение параметров обьектов #11
объектом вы называете железную бляху по центру?
скиньте побольше тестовых изображений, надо глянуть на них
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
28.10.2015, 10:20  [ТС]     Работа с OpenCV, нахождение параметров обьектов #12
я с того времени немного переделал код, теперь я работаю только с определенным участком -там где линия лазера пересекает обьект(но лазер я пока отложил в сторону)
Обьектом может быть лубая под руку попавшаяся вещь(на фото кусок пластика, металический крепеж, Шахматная доска)
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
28.10.2015, 10:21  [ТС]     Работа с OpenCV, нахождение параметров обьектов #13
Работа с OpenCV, нахождение параметров обьектов
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
28.10.2015, 10:22  [ТС]     Работа с OpenCV, нахождение параметров обьектов #14
конечно может быть и обьект с множеством линий, но я пока начал с простого)))
OstapBender
582 / 520 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
28.10.2015, 11:48     Работа с OpenCV, нахождение параметров обьектов #15
ну, если с простого, то можно как вы и хотели, начать с поиска крайних линий на изображении
VTsaregorodtsev
315 / 295 / 41
Регистрация: 19.02.2010
Сообщений: 1,270
01.11.2015, 21:32     Работа с OpenCV, нахождение параметров обьектов #16
MValeriy, лазер красный? Тогда на камеру красный светофильтр, и затем прошедшее через него резать по яркости (чтобы ещё сильнее убрать блики и т.д., раз у Вас металл.поверхность).

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

Лазер у меня светил перпендикулярно сверху, камера стояла сверху-сбоку.
Миниатюры
Работа с OpenCV, нахождение параметров обьектов  
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
02.11.2015, 11:03  [ТС]     Работа с OpenCV, нахождение параметров обьектов #17
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
чтобы ещё сильнее убрать блики и т.д., раз у Вас металл.поверхность
Поверхность не металлическая, для примера положил первое что попалось под руку. Исследуемый обьект скорее всего будет резина или кусок пластика(бликов не будет)
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
02.11.2015, 11:15  [ТС]     Работа с OpenCV, нахождение параметров обьектов #18
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Лазер у меня светил перпендикулярно сверху, камера стояла сверху-сбоку.
в моем проекте аналогичное расположение камеры и лазера. Лазер перпендикулярно обьекту, камера примерно под углом 40 градусов к лазеру
схаматично: Работа с OpenCV, нахождение параметров обьектов
MValeriy
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 28
02.11.2015, 11:18  [ТС]     Работа с OpenCV, нахождение параметров обьектов #19
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
(проект был несколько лет назад, не на OpenCV, делал определение размеров-геометрии распиливаемого на доски бревна
Был бы очень признателен если бы вы поделились вашими результатами. Скиньте пожалуйста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2015, 21:24     Работа с OpenCV, нахождение параметров обьектов
Еще ссылки по теме:

Opencv cvFindContours - нахождение контуров и сортировка по горизонтали C++
Работа с библиотеками openCV C++
OpenCV для Visual Studio C++ работа с изображениями C++
C++ Изменение параметров изображения в зависимости от положения ползунка (Opencv)
Работа с библиотекой opencv C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
VTsaregorodtsev
315 / 295 / 41
Регистрация: 19.02.2010
Сообщений: 1,270
04.11.2015, 21:24     Работа с OpenCV, нахождение параметров обьектов #20
Увы, коммерческая разработка
Yandex
Объявления
04.11.2015, 21:24     Работа с OpenCV, нахождение параметров обьектов
Ответ Создать тему
Опции темы

Текущее время: 12:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru