gpt4 book ai didi

c++ - 当我更改其他 Mat 对象时,Mat 值会更改

转载 作者:行者123 更新时间:2023-11-28 01:19:07 27 4
gpt4 key购买 nike

当我复制一个 Mat 对象时,其他 Mat 对象中的值意外更改。变化发生在两个打印语句之间。这是为什么?

Mat flow;

calcOpticalFlowFarneback(u_prev, u_curr, u_flow, 0.5, 2, 20, 3, 15, 1.2, OPTFLOW_FARNEBACK_GAUSSIAN);
flow = u_flow.getMat(ACCESS_READ);

cout << "1 " << flow.ptr<Pixel2>(680,192)->x << endl;


Mat out_img;
resized_frame.copyTo (out_img);

cout << "2 " << flow.ptr<Pixel2>(680,192)->x << endl;

输出如下

1 164.812
2 8.42217e-21

最佳答案

Mat::ptr 的参数是Mat::ptr(int row, int col)docs 中所述.自 flow是一个 480x852 矩阵,flow.ptr<Pixel2>(680, 192)访问越界行并读取矩阵外的内存。最有可能的是,内存位置被分配给程序中的另一个变量(在这种情况下可能是 out_img),它会随着时间的推移而改变。根据编译器使用的内存布局,它甚至可能在某些平台上出现段错误。

关于c++ - 当我更改其他 Mat 对象时,Mat 值会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57387254/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com