Я загрузил проект, который позволяет получать кадры из модуля камеры Pi с OpenCV. Когда я пытаюсь запустить загруженный код, он работает без проблем. Я просто хочу применить простую операцию treshold для фреймов, но я получил ошибку, показанную ниже."утверждение не выполнено (m.dims> = 2) в Mat" Raspberry Pi OpenCV
Я проверяю тип и канал кадров. image.channels()
возвращает 1 и image.type()
возвращает 0. Я не вижу причин для ошибки пороговой операции.
В чем проблема?
Ошибка:
Кодекс:
#include "cap.h"
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main() {
namedWindow("Video");
// Create capture object, similar to VideoCapture
// PiCapture(width, height, color_flag);
// color_flag = true => color images are captured,
// color_flag = false => greyscale images are captured
PiCapture cap(320, 240, false);
Mat image,binary;
double time = 0;
unsigned int frames = 0;
cout << "Press 'q' to quit" << endl;
while(char(waitKey(1)) != 'q') {
double t0 = getTickCount();
image = cap.grab();
std::cout<<image.channels()<< endl;//check for channel
cout<<image.type()<< endl;//check for type
threshold(image,binary,150,255,THRESH_BINARY);//threshold operation
frames++;
if(!image.empty()) imshow("Hello", image);
else cout << "Frame dropped" << endl;
time += (getTickCount() - t0)/getTickFrequency();
cout << frames/time << " fps" << endl;
}
return 0;
}
Вы проверили, не ли ли «образ» не пуст перед порогом? – ChronoTrigger
@ChronoTrigger Я вижу захваченные кадры в окне, используя «imshow», поэтому он не пуст. – ffttyy
Не могли бы вы также распечатать: 'cout << image.dims << endl; cout << image.size() << endl; '? – Miki