假设我有一个矩阵
A = cv::Mat(3,3,CV_32F)
Run Code Online (Sandbox Code Playgroud)
和一个矩阵
B = cv::Mat(2,2,CV_32F).
Run Code Online (Sandbox Code Playgroud)
假设A全部为零而B则全部为零.我想将B的值分配给A的左上角.我该怎么做?
我尝试了以下方法:
A(cv::Rect_<int>(0,0,2,2)) = B
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.但是,以这种方式将标量值指定给A的子矩阵确实有效:
A(cv::Rect_<int>(0,0,2,2)) = 1.0
Run Code Online (Sandbox Code Playgroud)
第一种方法有什么问题?
Chr*_*ian 36
我更喜欢单行,但这样做的诀窍:
cv::Mat tmp = A(cv::Rect(0,0,2,2));
B.copyTo(tmp);
Run Code Online (Sandbox Code Playgroud)
Tim*_* MB 14
我相信你的第一个方法的原因
A(cv::Rect_<int>(0,0,2,2)) = B
Run Code Online (Sandbox Code Playgroud)
不起作用是因为赋值运算符=不复制值,而是修改矩阵的标题以指向另一个的子矩阵.因此,所有这一行都是创建一个指向A的子矩阵的临时头矩阵,然后将该临时矩阵的头部替换为B,然后忘记它.A和B中的数据保持不变.
你想要什么(虽然我没有测试过)
B.copyTo(A(cv::Rect_<int>(0,0,2,2)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32366 次 |
| 最近记录: |