OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

findChessboardCorners函数未找到角点

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式
我用findChessboardCorners函数进行棋盘格找点,但是找不到角点,如图所示,原图大小是1747*1101,可是我把这张原图剪切变小就可以识别出角点,大小是1327*995,不知道是什么原因,请教下各位大神为什么新手发不了图片,,


C:\Users\cl\Desktop\QQ截图20171113144429.png


回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
1、看不到你写的源码没法帮你分析
2、你发送的图片必须是网络图片
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
houzepeng 发表于 2017-11-13 17:40
1、看不到你写的源码没法帮你分析
2、你发送的图片必须是网络图片

char *imageFile = "E:\\VS2013\\C713\\0937201.bmp";
        Mat raw = imread(imageFile);//把图像变成Mat数据类型
        cout << "宽, 高:" << raw.cols << ", " << raw.rows << endl;//将宽高打印到屏幕上

        vector<Point2f> pointBuf;//存放角点坐标的容器
        Size boardSize = Size(cornerWidth, cornerHeight); //棋盘格内角点数量
        bool found;
        found = findChessboardCorners(raw, boardSize, pointBuf,
                CV_CALIB_CB_ADAPTIVE_THRESH + CV_CALIB_CB_NORMALIZE_IMAGE + CV_CALIB_CB_FAST_CHECK);//检测棋盘格角点
                if (found) {
                cout << "Found Chessboard Corners" << endl;
                //improve the found corners' coordinate accuracy for chessboard
                Mat gray;
                cvtColor(raw, gray, CV_BGR2GRAY);//转换成灰度图
                cornerSubPix(gray, pointBuf, Size(11, 11), Size(-1, -1),//求取角点的亚像素级坐标位置
                        TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));
                 //Draw the corners.
                cout << "共检出内角点数: " << pointBuf.size() << endl;
                assert(pointBuf.size() == cornerWidth * cornerHeight);//如果条件不满足,会弹出错误信息
                for (int i = 0; i < pointBuf.size(); ++i) {
                        cout << pointBuf.at(i).x << ", " << pointBuf.at(i).y << endl;//输出角点的坐标
                }
                drawChessboardCorners(raw, boardSize, Mat(pointBuf), found);//在原图上画出角点
        }
               
        Mat view = Mat(raw.cols / scale, raw.rows / scale, CV_8UC3);
        resize(raw, view, Size(raw.cols / scale, raw.rows / scale));//将原图像缩小至原来的16倍
        circle(view, Point(view.cols / 2, view.rows / 2), 5, Scalar(0, 0, 255), CV_FILLED);//在缩小图像画出中心位置
        imshow("raw", view);//显示缩小的图像


回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
houzepeng 发表于 2017-11-13 17:40
1、看不到你写的源码没法帮你分析
2、你发送的图片必须是网络图片

可是我在哪上传网络图片呢,照片是我自己用相机拍的
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
c++大佬,@AL_F,问问他把,我看不懂
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
行列数对么?很多找不到是因为行列数没有设置对。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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