OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 188|回复: 5

OpenCV Error: Assertion failed

[复制链接]
发表于 2017-9-11 10:04:35 | 显示全部楼层 |阅读模式
   for (int i = 0; i < nSample; i++){ // iterate through rows (y)
        
        // calculate row for given number of sample points
        int row = (i+1) * (hough.rows / nSample);
        
  for (int col = 0; col < hough.cols; col++){ // iterate through columns (x)
   // if line present in pixel store location in pts vector
   
    Scalar colour = hough.at<uchar>(Point(row, col));
      
            
            if(colour.val[0]==255){
               
                pts.push_back(Point(row,col));
               
               
            }
在这里使用at函数,总是会出错
OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)pt.y < (unsigned)size.p[0] && (unsigned)(pt.x * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()) in cv::Mat::at,
检查了一下,当Pt.x到972的时候报错,查了资料说是访问越界,但是这里我的图片大小是1080x960,x的范围应该是1080,但是运行到972就报错,这个是什么原因?求大神指点
回复

使用道具 举报

发表于 2017-9-11 14:46:07 | 显示全部楼层
at<uchar>(y,x);
回复 支持 1 反对 0

使用道具 举报

发表于 2017-9-11 10:57:42 | 显示全部楼层
把代码贴清晰点,你这大括号都不全,,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-11 11:02:17 | 显示全部楼层
本帖最后由 小纸飞机 于 2017-9-11 11:03 编辑
chensiyuan 发表于 2017-9-11 10:57
把代码贴清晰点,你这大括号都不全,,

这是调试到这里出的错,整个函数为
void sampleLine(int overlayFlag){
    vector<Point> pts; // initialise vector of points
    pts.clear();
   
    // Set image with best fit line to all zeros
    Mat m(hough.size(),CV_8UC1,Scalar(0));
    imgBestFit = m;
   
    // Overlay line on original image if flag set to 1
    if (overlayFlag == 1){
        image.copyTo(imgBestFit);
    }
   
    for (int i = 0; i < nSample; i++){ // iterate through rows (y)
        
        // calculate row for given number of sample points
        int row = (i+1) * (hough.rows / nSample);
        
                for (int col = 0; col < hough.cols; col++){ // iterate through columns (x)

                        // if line present in pixel store location in pts vector
                        
                                Scalar colour = hough.at<uchar>(Point(row, col));
                     
            
            if(colour.val[0]==255){
               
                pts.push_back(Point(row,col));
               

              }
          }
       }      
  }
回复 支持 反对

使用道具 举报

发表于 2017-9-11 11:13:47 | 显示全部楼层
访问下标问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-13 09:32:11 | 显示全部楼层

谢谢,解决啦,谢谢大神
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|OpenCV中文网站 ( 粤ICP备13079875号-2

GMT+8, 2017-11-20 12:14 , Processed in 0.026351 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表