Перейти к содержимому
Compvision.ru
Dmti

Как Мат передать через сигнал

Recommended Posts

Добрый день, появилось свободное время, и решил дописать свою программку, и сразу столкнулся с тем что, не  могу передать Мат через сигнал/слот

QObject::connect(this,SIGNAL(Frames(Mat&)), CamerasNew, SLOT(detectFase(Mat&)));//Находим рожу
или
QObject::connect(this,SIGNAL(Frames(Mat)), CamerasNew, SLOT(detectFase(Mat)));

Всю субботу просидел, пытаясь применить  qRegisterMetaType () . Но прогуглев кучу статей, так ничего не смог сделать, решил обратиться к гуру. Если не трудно, объясните, как правильно надо передавать матрицы и вектора из потока в поток. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так и не смог победить - получаю ошибку, хоть тресни.

QObject::connect: Cannot queue arguments of type 'Mat'
(Make sure 'Mat' is registered using qRegisterMetaType().)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Работайте не с Мат, а с массивом байтов

vector<uchar> buf;
    imencode(".bmp", image, buf);
    int size = buf.size();
    for (int i = 0; i < size; i++)
        bArr[i] = (uchar)buf[i];

imdecode - функция обратного преобразования

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ошибка была в месте написания команды:

Q_DECLARE_METATYPE(cv::Mat);

после перенесения её до начала 

int main()
 {

и строки 

qRegisterMetaType<Mat>("Mat");

перед

QObject::connect(this,SIGNAL(Frames(Mat)), CamerasNew, SLOT(detectFase(Mat)));//Находим рожу 

ошибка исчезла, но неисчезли проблемы в detectFase, Мат приходит пустым. Я где-то читал, что вроде как получаю только копию, а чтобы передовать как есть, нужно сказать - хочу не копию. Должно получится что-то типа:

emit Frames(ХХХ(frame)); 

а вот это ХХХ не могу вспомнить, хоть тресни. Или я что-то неправильно понимаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×