我mRgba Matrix and a Rect r
(框架中已识别的内容)
我想要一个由Rect r.
当我像这样使用它时:
sub = mRgba.submat(r);
我得到了正确的子矩阵,但我接下来的步骤有问题,我想更改帧的这一部分,然后将其复制回原始。
例如:
Imgproc.cvtColor(sub, sub, Imgproc.COLOR_RGBA2GRAY, 1); //make it gray
Imgproc.cvtColor(sub, sub, Imgproc.COLOR_GRAY2RGBA, 4); //change to rgb
如何将此更改的子矩阵复制回原始矩阵。 或者我怎样才能获得/创建一个与mRgba相同大小的Mask,除了Rect r部分以外都是零?
答案 0 :(得分:0)
您的代码无法按预期工作,因为无法就地更改颜色数。您需要一个临时矩阵才能使其正常工作:
Mat tmp;
Imgproc.cvtColor(sub, tmp, Imgproc.COLOR_RGBA2GRAY); //make it gray
Imgproc.cvtColor(tmp, sub, Imgproc.COLOR_GRAY2RGBA); //change to rgb
答案 1 :(得分:0)
sub = mRgba.submat(r);
Imgproc.cvtColor(sub, sub, Imgproc.COLOR_RGBA2GRAY, 1); //make it gray
Imgproc.cvtColor(sub, sub, Imgproc.COLOR_GRAY2RGBA, 4); //change to rgb
sub.copyTo(mRgba.submat(r));
好吧这似乎可以做到这一点:)它将更改后的子图片/矩阵复制回源的区域..(通常用setROI和copyto完成)