簡體   English   中英

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)訪問Mat相對於at<>()方法而言偏移為+1,這對我來說似乎很奇怪。 我是否缺少某些東西,或者是OpenCv的已知問題?

看一下Mat::zeros() ,您的調用方式是rows = 100 cols = 1 當您使用i = 0調用values.at<float>(i, 1) ,您將訪問第0行和第1行的元素,這當然超出Mat的范圍。

values.at<float>(i, 1)更改為values.at<float>(i, 0)並在Debug模式下運行構建,以供以后參考,其中OpenCV斷言將捕獲此類錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM