为什么InputOutputArray采用const Mat&构造函数中的引用?

时间:2018-02-02 20:10:56

标签: c++ opencv opencv3.3

InputOutputArray的构造函数在构造函数中采用const cv :: Mat&,这意味着编译时没有任何警告或错误。

为什么InputOutputArray采用const Mat引用。我理解为什么InputArray采用const引用,但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 个答案:

答案 0 :(得分:0)

cv::_InputOutputArray::_InputOutputArray (const Mat & m)的构造函数确实是exists

通过查看https://github.com/opencv/opencv/issues/7298似乎

  1. 对于基础数据的“访问”锁定在编译时和运行时都不可用。开发人员有责任控制这个“

  2. “......可能没有真正的解决方案(即使使用c ++ 17)”

  3. “像这样的问题在C ++中是众所周知的,并不是OpenCV独有的。”