OpenCV的函数cvtColor可以将矩阵的颜色空间转换(例如从RGB到灰度)。该函数的C++签名为:
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
这个函数可以原地转换矩阵吗?也就是说,src
和 dst
是同一个对象?
cv::Mat mat = getColorImage();
cvtColor(mat, mat, CV_RGB2GRAY);
我知道无论如何,由于目标的通道数与源不同,它仍然需要为目标分配新的内存块。更一般地说,在OpenCV API中有没有惯例可以确定何时可以以这种方式使用函数?