gpt4 book ai didi

c++ - Opencv 行方法有一个奇怪的行为

转载 作者:行者123 更新时间:2023-11-28 02:27:30 24 4
gpt4 key购买 nike

我正在使用 OpenCv Mat 访问和复制 (C++)。考虑以下示例:

 cv::Mat values  = cv::Mat::zeros(100, 1, CV_32FC1);
for (int i = 0; i < 100; i++) {
values.at<float>(i, 1) = 10 + i;

}

cout<<values.at<float>(0, 1)<<endl; // prints 10
cout<<values.at<float>(1, 1)<<endl; // prints 11
cout<<values.row(0) <<endl; // prints 0
cout<<values.row(1)<<endl; // prints 10
cout<<values.row(2)<<endl; // prints 11

问题是 row(0)始终返回 0 并使用 row(1)...row(n) 访问 Mat相对于方法 at<>() 的偏移量为 +1这对我来说很奇怪。我是否遗漏了什么或者是 OpenCv 的已知问题?

最佳答案

Mat::zeros() , 你调用它的方式是 rows = 100 cols = 1 .当您调用 values.at<float>(i, 1)i = 0您正在访问第 0 行和第 1 列的元素,这当然超出了您的 Mat 范围。

更改 values.at<float>(i, 1)values.at<float>(i, 0)为了将来引用,在 Debug模式下运行您的构建,其中 OpenCV 断言将像这样捕获您的错误。

关于c++ - Opencv 行方法有一个奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30029770/

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