c++ - 当我更改其他 Mat 对象时,Mat 值会更改
问题描述
当我复制一个 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
中所述。由于是 480x852 矩阵,因此访问越界行并读取矩阵外的内存。很可能内存位置被分配给程序中的不同变量(在这种情况下可能是),该变量会随着时间而改变。根据编译器使用的内存布局,它甚至可能在某些平台上出现段错误。Mat::ptr(int row, int col)
flow
flow.ptr<Pixel2>(680, 192)
out_img
推荐阅读
- git - 在 Git 中删除超过 90 天的文件版本
- android - 如何使用 Kotlin 实现自我管理的 ConnectionService
- reactjs - 从 React 中的另一个文件中获取 JSON 值
- ffmpeg - ffmpeg xfade for(复杂过滤器或选择过滤器)
- android - 无法处理 Android 中发布请求的改造错误响应
- python - 如何为 mac 制作等效的 .bat 以及如何在 mac 上安装 python 库
- angular - Angular 材质 mat-form-field 中缺少关联标签 - WebStorm
- android - 在导航抽屉菜单的末尾设置特定的组项
- javascript - 基于 flexbox wrap react bootstrap 调整视频大小
- r - 如何编写自定义管道友好函数?