трекбар opencv не регулируется

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

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

Вот мой код:

#include "opencv2/objdetect.hpp"#include "opencv2/videoio.hpp"#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

//Function Headers
void on_trackbar(int, void*);

// Global variables
int threshold_value = 30;
Mat frame_gray;

String face_cascade_name = "/opencv-3.0.0/data/haarcascades/haarcascade_frontalface_alt.xml";
CascadeClassifier face_cascade;
String window_name = "Capture";
String trackbarWindowName = "TrackBars";

int main( void )
{
VideoCapture capture;
Mat frame;

//create windows and trackbar
namedWindow(trackbarWindowName, WINDOW_AUTOSIZE);
namedWindow(window_name, WINDOW_AUTOSIZE);
createTrackbar("threshold", trackbarWindowName, &threshold_value, 255, on_trackbar);

//Load the face cascade
face_cascade.load( face_cascade_name );

//Read the video stream
capture.open( 0 );
printf("opened webcam\n");

while ( capture.read(frame) )
{
if( frame.empty() )
{
printf(" --(!) No captured frame -- Break!");
break;
}

cvtColor( frame, frame_gray, COLOR_BGR2GRAY );
threshold( frame_gray, frame_gray, threshold_value, 255, 1);
imshow( window_name, frame_gray);
int c = waitKey(10);
if( (char)c == 27 ) { break; } // escape

}
return 0;
}

void on_trackbar(int, void*){
printf("hello\n");
printf("%d\n", threshold_value);
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]