54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
#include "lfr.h"
|
|
|
|
|
|
LFR::LFR(int videoHeight, int videoWidth, int thresholdBinary, int gaussKernelSize, int thresholdCanny1, int thresholdCanny2, int apertureSizeCanny)
|
|
: iAmLooping(false), input(videoHeight, videoWidth), processing(), controlModule(), interpreter(), intersectionHandler()
|
|
{
|
|
this->iAmLooping = false;
|
|
this->thresholdBinary = thresholdBinary;
|
|
this->gaussKernelSize = gaussKernelSize;
|
|
this->thresholdCanny1 = thresholdCanny1;
|
|
this->thresholdCanny2 = thresholdCanny2;
|
|
this->apertureSizeCanny = apertureSizeCanny;
|
|
}
|
|
|
|
LFR::~LFR()
|
|
{
|
|
if(iAmLooping)
|
|
{
|
|
this->endLoop();
|
|
}
|
|
}
|
|
|
|
void LFR::loop()
|
|
{
|
|
namedWindow("Display window");
|
|
while(iAmLooping)
|
|
{
|
|
Mat image = input.readWebcam();
|
|
processing.processImage(image, this->thresholdBinary, this->gaussKernelSize, this->thresholdCanny1, thresholdCanny2, this->apertureSizeCanny);
|
|
std::vector<Vec4i> lines = processing.calculateLineSegments(image);
|
|
for( size_t i = 0; i < lines.size(); i++ )
|
|
{
|
|
line( image, Point(lines[i][0], lines[i][1]),
|
|
Point( lines[i][2], lines[i][3]), (0,0,255), 1, 8 );
|
|
}
|
|
imshow("Display window", image);
|
|
char c = (char)waitKey(1);
|
|
}
|
|
destroyWindow("Display window");
|
|
input.freeWebcam();
|
|
}
|
|
|
|
void LFR::startLoop()
|
|
{
|
|
iAmLooping = true;
|
|
this->loopThread=thread(&LFR::loop, this);
|
|
}
|
|
|
|
void LFR::endLoop()
|
|
{
|
|
iAmLooping = false;
|
|
this->loopThread.join();
|
|
return;
|
|
} |