如下:直接给m的左上角2*2区域赋值是不行的
#include <opencv.hpp>
using namespace cv;
int main() {
Mat m = Mat(Size(3, 3), CV_8U,Scalar(0));
Mat rect = Mat(Size(2,2), CV_8U,Scalar(99));
m(Rect(0, 0, 2, 2)) =rect;
std::cout << m << std::endl;
}

因此,猜测m(Rect(0,0,2,2))只是传出左上角区域的拷贝,并没有把引用传出来,但是把m(Rect(0,0,2,2))=rect;改成m(Rect(0,0,2,2)+=rect;之后就可以赋值成功,所以我想问下Mat(Rect())到底是怎么操作的?