opencv3.2 — видеокадры появляются только при нажатии клавиш Esc, пробела или ввода. Переполнение стека OpenCV

Я являюсь посредником в Computer Vison и довольно опытен в opencv python, но, переходя на c ++, я сталкиваюсь с проблемами, связанными с выбором ROI из видео-канала и отображением обрезанного канала. Мой код выглядит следующим образом.

#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"#include "opencv2/objdetect/objdetect.hpp"#include "opencv2/tracking.hpp"#include "iostream"using namespace cv;
using namespace std;
int main() {

Mat frame1;
VideoCapture cap;
cap.open(0);
cap.read(frame1);
Rect2d roi = selectROI(frame1, true);
Mat Crop = frame1(roi);

while (1) {

cap.read(frame1);
Crop = frame1(roi);
if (Crop.empty()) {
cerr << "ERROR! blank frame grabbed\n";
break;

}
imshow("roi", Crop);
int key=waitkey(0);

}
}

Код компилируется, и обрезанное окно видно, однако мне всегда нужно нажимать клавишу ввода, пробел или esc, чтобы получить видеопоток. Странно?

0

Решение

Таким образом, правильная версия исправленного кода будет выглядеть примерно так. Спасибо за помощь.

#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"#include "opencv2/objdetect/objdetect.hpp"#include "opencv2/tracking.hpp"#include "iostream"using namespace cv;
using namespace std;
int main() {

Mat frame1;
VideoCapture cap;
cap.open(0);
cap.read(frame1);
Rect2d roi = selectROI(frame1, true);
Mat Crop = frame1(roi);

while (1) {

cap.read(frame1);
Crop = frame1(roi);
if (Crop.empty()) {
cerr << "ERROR! blank frame grabbed\n";
break;

}
imshow("roi", Crop);
*int key=waitkey(1)*;

}
}

1

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

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

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