Почему InputOutputArray принимает const Mat & amp; ссылка в конструкторе?

Конструктор для InputOutputArray принимает const cv :: Mat&в конструкторе, что означает, что это компилируется без каких-либо предупреждений или ошибок.

Почему InputOutputArray принимает константную ссылку Mat. Я понимаю, почему InputArray принимает константную ссылку, но OutputArray действительно не должен

void this_shouldnt_compile(const cv::Mat& mat) {
// const, so the header should not be modifiable
// but the data is
putText(mat, "some text", cvPoint(0,10),
FONT_HERSHEY_COMPLEX_SMALL, 0.8,
cvScalar({0,255,0}), 1, CV_AA);
}

1

Решение

Так что конструктор для cv::_InputOutputArray::_InputOutputArray (const Mat & m) в самом деле существует

Глядя на https://github.com/opencv/opencv/issues/7298 Кажется, что

  1. «Блокировка» доступа к базовым данным недоступна ни во время компиляции, ни во время выполнения. За это отвечает разработчик ».

  2. «… может быть, нет реального решения (даже с c ++ 17)»

  3. «Подобные проблемы хорошо известны в C ++ и не являются уникальными для OpenCV».

0

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

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

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