【发布时间】:2019-05-05 21:24:28
【问题描述】:
我有一个 480x480 的垫子 A 和 478x478 的垫子 B。 我想在 C++ 中使用 Mat B 填充 Mat A(不包括 A 的边界)。 在 python 中,我使用来自 numpy 的以下符号
A[1:-1,1:-1] = B[:,:,0]
为了在 c++ 中实现同样的效果,我尝试使用以下代码使用通道和范围,但没有成功。
std::vector<Mat> B_channel(3);
split(B, B_channel);
A(cv::Range(1,479), cv::Range(1, 479)) = B_channel[0];
如何在 C++ 中实现相同的功能。
【问题讨论】:
-
“没用”是什么意思?
-
B_channel 中的值不会复制到 A。当我尝试输出 AI 时,看到所有零,这是我用 cv::Mat A = cv::Mat::zeros(cv ::尺寸(480, 480), CV_8UC1)
-
B_channel[0].copyTo(A(Rect(1,1,A.cols-2, A.rows-2)));