2015-12-22 1 views
0

Я загрузил проект, который позволяет получать кадры из модуля камеры Pi с OpenCV. Когда я пытаюсь запустить загруженный код, он работает без проблем. Я просто хочу применить простую операцию treshold для фреймов, но я получил ошибку, показанную ниже."утверждение не выполнено (m.dims> = 2) в Mat" Raspberry Pi OpenCV

Я проверяю тип и канал кадров. image.channels() возвращает 1 и image.type() возвращает 0. Я не вижу причин для ошибки пороговой операции.

В чем проблема?

Ошибка:

enter image description here

Кодекс:

#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; 
} 
+0

Вы проверили, не ли ли «образ» не пуст перед порогом? – ChronoTrigger

+0

@ChronoTrigger Я вижу захваченные кадры в окне, используя «imshow», поэтому он не пуст. – ffttyy

+2

Не могли бы вы также распечатать: 'cout << image.dims << endl; cout << image.size() << endl; '? – Miki

ответ

-1

Утверждающие m.ndims> = 2, чтобы проверить, что матрица в вопросе является действительным двухмерное изображение. Пока у вас есть условие, чтобы показать изображение, только если оно не пустое. Но утверждение должно быть неудачным до того, как программа достигнет этого условного. Поэтому вы не должны видеть всплывающее окно с изображением.

Смежные вопросы