Browse Source

input threadsafe

master
Tim Zeuner 1 year ago
parent
commit
747053f132
2 changed files with 7 additions and 3 deletions
  1. 6
    2
      AutonomousMode/Input/input.cpp
  2. 1
    1
      AutonomousMode/Input/input.h

+ 6
- 2
AutonomousMode/Input/input.cpp View File

@@ -1,9 +1,10 @@
#include "input.h"

// TODO: Wenn ihr in die Zeile den Pfad zum Testvideo statt der 0 packt, benmutzt er das Testvideo.
Input::Input(int videoHeight, int videoWidth) : cap("C:\\Line-Following-Robot\\AutonomousMode\\Test_data\\video1.h264"), videoHeight(videoHeight), videoWidth(videoWidth)
Input::Input(int videoHeight, int videoWidth) : cap("C:\\Line-Following-Robot\\AutonomousMode\\Test_data\\video1.h264"), videoHeight(videoHeight), videoWidth(videoWidth)//Input::Input(int videoHeight, int videoWidth) : cap(0), videoHeight(videoHeight), videoWidth(videoWidth)
//Input::Input(int videoHeight, int videoWidth) : cap(0), videoHeight(videoHeight), videoWidth(videoWidth)
{
std::unique_lock<std::mutex> lock(mtx);
this->cap.set(CAP_PROP_FRAME_HEIGHT, videoHeight);
this->cap.set(CAP_PROP_FRAME_WIDTH, videoWidth);
}
@@ -15,7 +16,8 @@ Input::~Input()

Mat Input::readFile(String filePath)
{
std::srand(std::time(0));
std::unique_lock<std::mutex> lock(mtx);
std::srand(static_cast<unsigned int>(std::time(0)));
// Read all .jpg files from the specified folder
cv::String folder = filePath;
std::vector<cv::String> filenames;
@@ -40,6 +42,7 @@ Mat Input::readFile(String filePath)

Mat Input::readWebcam()
{
std::unique_lock<std::mutex> lock(mtx);
Mat image;

if(!cap.isOpened()) {
@@ -59,5 +62,6 @@ Mat Input::readWebcam()

void Input::freeWebcam()
{
std::unique_lock<std::mutex> lock(mtx);
this->cap.release();
}

+ 1
- 1
AutonomousMode/Input/input.h View File

@@ -16,7 +16,7 @@ class Input
{
private:
VideoCapture cap;
mutable std::mutex mtx;
public:
int videoHeight;
int videoWidth;

Loading…
Cancel
Save