- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 OpenCV 编写 C++ 代码,我正在尝试检测图像(从 .jpg 文件加载)上的棋盘以扭曲图像的视角。当 findChessboardCorners() 找到棋盘时,我的其余代码工作正常。但有时函数没有检测到模式,这种行为似乎是随机的。
例如,有一张图片可以在其原始分辨率 2560x1920 上使用,但如果我先使用 GIMP 将其缩小到 800x600 则不行。然而,另一个图像似乎做相反的事情:在原始分辨率下不起作用,但在缩小时起作用。
这是我执行检测的代码:
Mat grayimg = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
if (img.data == NULL) {
printf("Unable to read image");
return 0;
}
bool patternfound = findChessboardCorners(grayimg, patternsize, corners,
CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_FAST_CHECK);
if (!patternfound) {
printf("Chessboard not found");
return 0;
}
opencv 中是否存在某种错误导致此行为?有没有人对如何预处理您的图像有任何提示,以便该功能更一致地工作?
我已经尝试使用参数 CALIB_CB_ADAPTIVE_THRESH、CALIB_CB_NORMALIZE_IMAGE、CALIB_CB_FILTER_QUADS 和 CALIB_CB_FAST_CHECK。当我传入彩色图像时,我也得到了相同的结果。
提前致谢
编辑:我使用的是 OpenCV 2.4.1 版
最佳答案
我很难让 findChessboardCorners 工作,直到我在棋盘周围添加了一个白板。
我在最近的文档中的某个地方发现了这一点。
在添加边框之前,有时无法识别键盘,但有了白色边框,每次都能正常工作。
关于c++ - opencv 中 findChessboardCorners() 的结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11147721/
我正在使用 OpenCV 函数 findChessboardCorners()成功了,但我对 corners 的形状感到困惑返回值。 下面是我的代码。我已经知道我的棋盘图像有 8 x 6 个内角。 i
我的 python 代码无法在图像上找到棋盘。我使用这段代码来解决这个任务: import numpy as np import cv2 import glob # termination crite
我正在使用新的 EmguCV 3.0.0 alpha 来检测带有网络摄像头的棋盘,并且对角矩阵有理解问题。 Size patternSize = new Size(5, 4);
我正在尝试让 OpenCV 2.4.5 识别来 self 的网络摄像头的棋盘格图案。我无法让它工作,所以我决定尝试使用“完美”的图像来让它工作: 但它仍然不起作用——patternFound 每次都返
我可以将 FindChessboardCorners 函数用于小于 15 兆像素的图像,例如 2k x 1.5k。但是,当我在 DSLR 的图像上使用它时,分辨率为 3700x5300,它不起作用。
我在视觉应用程序中使用 cv2 findChessBoardCorners 进行相机校准。我对该函数的调用如下所示: def auto_detect_checkerboard(self, image)
有人知道为什么是 cv::findChessboardCorners 超过 1 兆像素(> 1 000 000 像素)的所有图像都非常慢。 作为一种解决方法,我对图像进行下采样以适应这个界限,但我想知
嘿,我正在使用这个库 org.bytedeco.javacpp.opencv_core 版本 1.3.2 中的 JavaCV 作为 gradle 依赖项。 我正在运行这段代码来获取棋盘上的角,但我无法
假设我们有一个 8x9 的棋盘,函数 cv::findChessboardCorners 可以毫无问题地识别它,我的问题是为什么该函数无法在同一图像中识别出尺寸较小的棋盘,我在 for 循环中尝试并递
我正在使用 Opencv 的“findChessboardCorners”函数来查找棋盘的角,但是“findChessboardCorners”函数的返回值是 false。 以下是我的代码: int
我想将 findChessboardCorners 与 calibrateCamera 一起使用,但在使用 calibrateCamera 时遇到错误。输出不是很有帮助。 OpenCV Error:
下图被传递给 cv.findChessboardCorners 并且由于我无法理解的原因,它只是没有给我角位置。棋盘很明显,白线粗细也很突出。 你知道为什么这行不通吗? 图像尺寸为 960X1280,
我也在 OpenCV 论坛上问过这个问题,正在其他地方试试运气。我在 Visual Studio Professional 2013 中使用 OpenCV 3.0。 所以我正在尝试使用 calib3d
我正在使用 OpenCV 编写 C++ 代码,我正在尝试检测图像(从 .jpg 文件加载)上的棋盘以扭曲图像的视角。当 findChessboardCorners() 找到棋盘时,我的其余代码工作正常
我正在使用 OpenCV 2.2。 如果我使用 cvFindChessboardCorners 查找棋盘的角点,角点存储在变量 corners 中的顺序是什么(例如,先是左上角,然后是行然后列)? D
我有以下从相机拍摄的棋盘图像: 这是我的最小工作示例代码: import cv2 print(cv2.__version__) left_gray = cv2.imread('left_raw.jpg
有谁知道这个函数 cv::findChessboardCorners()在 OpenCV 中是在 c++ 类中实现的,如果是,请问是哪个 谢谢 最佳答案 #include ( L170 ) 关
我正在尝试使用 OpenCV 寻找棋盘的角点。 我使用的图像包含两个棋盘,但我只对其中一个的子区域感兴趣。下图为原图。 然后,我使用 GIMP 选择了感兴趣的区域,并将所有其他像素设置为默认值。 我实
我尝试校准我的相机。我运行了一些例子,但他们都没有找到棋盘的角落。最后,我使用 this question的代码,但是找不到角。下面有图。我用它来寻找角落。 我在网上找到了一个解决这个问题的命令。它说
我正在尝试使用 openCV 进行相机校准。只要我使用 cv2.findChessBoardCorners 在图像中找到我的校准目标,我就没有问题,但是如果我使用我自己的函数来查找点并用这些点构建一个
我是一名优秀的程序员,十分优秀!