2016-04-24 2 views
3

Предположим, я хочу использовать Mat как float. Следующий код может быть скомпилирован без ошибок. Однако безопасно ли это делать?Безопасно ли преобразование Mat в себя с другим типом?

Mat im = imread('test.jpg', CV_LOAD_IMAGE_GRAYSCALE); 
im.convertTo(im, CV_32F1); 

Я хочу, чтобы это сделать, потому что это написано более компактным, в противном случае мне нужно создать временную Mat.

documentation из Mat::convertTo() не содержит много информации о работе памяти.

+0

Если документации недостаточно, обратитесь к исходному коду. – Drop

+0

должно быть хорошо, но имейте в виду, что это может быть более эффективно, если вы используете второе изображение (если вы обрабатываете несколько изображений и не хотите постоянно выделять/деактивировать новую память) – Micka

ответ

1

Функция Mat :: convertTo должна быть безопасной для использования при использовании вызовов inplace (т. Е. Те же объекты ввода и вывода Mat).

According to OpenCV DevZone, эта функция имела ошибку при использовании вызовов inplace, но она была исправлена ​​несколько лет назад.

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