OpenCV行方法具有奇怪的行为
Opencv row method has a strange behavior
我正在使用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)
访问垫子的 1相对于我看上去很奇怪的方法at<>()
的偏移 1。我是否缺少某些内容,或者是已知的OpenCV问题?
请查看Mat::zeros()
,您称之为rows = 100
cols = 1
。当您使用i = 0
调用values.at<float>(i, 1)
时,您将在第0行和Col 1处访问该元素,当然哪个是超出垫子的范围。
将values.at<float>(i, 1)
更改为values.at<float>(i, 0)
,为将来的参考将您的构建运行在调试模式下运行您的构建,其中OpenCV断言会捕获您的错误。
相关文章:
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 在 OpenCV C++ 中估计基本矩阵之前对相应点进行归一化的正确方法是什么?
- OpenCv 在C++中从 1 D 数组制作垫子图像的最快方法
- 我最近正在阅读opencv源代码。有没有更好的方法来在opencv库中查找类定义?
- 从 std::vector 创建 OpenCV 垫子的有效方法
- 什么是用面部识别器opencv训练面孔以获得最佳效果的最佳方法
- 将 OpenCV 方法从 Java 重写为 C++
- 在所有程序中,在Visual Studio中添加OpENCV的一般方法是什么?
- OpenCv,将 4x4 cv::Mat 乘以 cv::P oint3f 的最佳方法是什么
- 在OPENCV中,仅在C 中存在某些方法,如何在Python中做同一件事
- 什么是通过MPI发送OpenCV垫的最佳方法
- 是否有一种方法可以修复编译器未找到特定的OPENCV变量/函数
- 调用PCACompute方法是OpenCV C++
- 调试一种方法,用于使用C 中的OpenCV从视频中查找帧的平均帧
- 使用OpenCV检测图像中垂直文本的方法
- Python方法的OpenCV C 类似物
- 试图找到一种在OpenCV / BOOST中记录图形数据的方法
- 确定一个图像是否在其他图像中的最佳方法 - opencv c ++
- 是否使用IplImage执行与Mat.covertTo相同的方法?OpenCV
- 什么是同时运行跟踪软件和服务器的正确方法?(OpenCV 3)