Использование OpenCV для обнаружения парковочных местC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование OpenCV для обнаружения парковочных мест

Сообщение Anonymous »

Я пытаюсь использовать opencv для автоматического поиска и определения местоположения всех парковочных мест на пустой парковке.

В настоящее время у меня есть код, который ограничивает изображение, применяется умелое обнаружение краев, а затем использует вероятностные линии для поиска линий, отмечающих каждое место для парковки.

Затем программа рисует линии и точки, из которых состоят линии< /p>

Вот код:

Код: Выделить всё

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include 

using namespace cv;
using namespace std;

int threshold_value = 150;
int threshold_type = 0;;
int const max_value = 255;
int const max_type = 4;
int const max_BINARY_value = 255;

int houghthresh = 50;

char* trackbar_value = "Value";

char* window_name = "Find Lines";

int main(int argc, char** argv)
{
const char* filename = argc >= 2 ? argv[1] : "pic1.jpg";
VideoCapture cap(0);
Mat src, dst, cdst, tdst, bgrdst;
namedWindow( window_name, CV_WINDOW_AUTOSIZE );

createTrackbar( trackbar_value,
window_name, &threshold_value,
max_value);

while(1)
{
cap >> src;
cvtColor(src, dst, CV_RGB2GRAY);
threshold( dst, tdst, threshold_value, max_BINARY_value,threshold_type );
Canny(tdst, cdst, 50, 200, 3);
cvtColor(tdst, bgrdst, CV_GRAY2BGR);

vector lines;
HoughLinesP(cdst, lines, 1, CV_PI/180, houghthresh, 50, 10 );
for( size_t i = 0; i < lines.size(); i++ )
{
Vec4i l = lines[i];
line( bgrdst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,255,0), 2, CV_AA);
circle( bgrdst,
Point(l[0], l[1]),
5,
Scalar( 0, 0, 255 ),
-1,
8 );
circle( bgrdst,
Point(l[2], l[3]),
5,
Scalar( 0, 0, 255 ),
-1,
8 );
}

imshow("source", src);
imshow(window_name, bgrdst);

waitKey(1);
}
return 0;
}
В настоящее время моя главная проблема — выяснить, как экстраполировать данные линии, чтобы найти расположение каждого парковочного места. Моя цель — заставить opencv найти парковочные места и нарисовать на каждом парковочном месте прямоугольники с номером, обозначающим эти места.

Я думаю, что есть некоторые серьезные проблемы с методом, который я сейчас использую, потому что, как показано на выходных изображениях, opencv обнаруживает несколько точек на линии, кроме 2 конечные точки. Это может затруднить использование opencv для соединения двух соседних конечных точек.

Я читал что-то об использовании выпуклой оболочки, но не совсем понимаю, что и как она делает. работает.

Любая помощь будет оценена по достоинству.
Вот выходные изображения моей программы:
http://imageshack.us/photo/my- images/22/test1hl.png/

http://imageshack.us/photo/my-images/822/test2lw.png/

Подробнее здесь: https://stackoverflow.com/questions/146 ... king-spots
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»