棋盘格标定板制作:在ubuntu20.04上,使用C++绘制。

在Ubuntu 20.04上运行上述C++源代码以生成用于相机标定的黑白棋盘格图像的步骤如下:

1. 安装OpenCV:

   如果你还没有安装OpenCV库,可以使用以下命令在Ubuntu 20.04上安装它:

   sudo apt-get update
   sudo apt-get install libopencv-dev

2. 创建C++源文件:

   使用你喜欢的文本编辑器(如Visual Studio Code、Nano或Gedit)创建一个新的C++源文件,例如 `generate_chessboard.cpp`。

nano generate_chessboard.cpp

3. 粘贴代码:

   打开 `generate_chessboard.cpp` 文件,

#include 
#include 

int main() {
    float squareSizeMM = 23.31; // 每个方格的尺寸(以毫米为单位)
    int chessboardWidth = 12;   // 棋盘格内部的列数
    int chessboardHeight = 9;  // 棋盘格内部的行数

    float screenPixelPitchMM = 0.2331; // 屏幕点距(以毫米为单位)

    // 计算图像的实际宽度和高度(像素)
    int imageWidth = static_cast(chessboardWidth * squareSizeMM / screenPixelPitchMM);
    int imageHeight = static_cast(chessboardHeight * squareSizeMM / screenPixelPitchMM);

    // 创建一个空白图像
    cv::Mat chessboardImage(imageHeight, imageWidth, CV_8UC1, cv::Scalar(255));

    // 绘制黑白相间的小方块
    for (int i = 0; i < chessboardHeight; ++i) {
        for (int j = 0; j < chessboardWidth; ++j) {
            int xOffset = static_cast(j * squareSizeMM / screenPixelPitchMM);
            int yOffset = static_cast(i * squareSizeMM / screenPixelPitchMM);

            // 交替绘制黑白方块
            if ((i + j) % 2 == 0) {
                cv::rectangle(chessboardImage, cv::Point(xOffset, yOffset), cv::Point(xOffset + squareSizeMM / screenPixelPitchMM, yOffset + squareSizeMM / screenPixelPitchMM), cv::Scalar(0), -1);
            }
        }
    }

    // 保存生成的棋盘格图像
    cv::imwrite("chessboard.png", chessboardImage);

    // 显示图像(可选)
    cv::imshow("Chessboard", chessboardImage);
    cv::waitKey(0);

    return 0;
}

   注意:本代码绘制的棋盘格大小为12 x 9,每个格子边长为23.31mm。

由于计算机只能输出像素,所以想要控制打印出的格子是多少毫米,需要计算出像素边长,再用预定义的现实世界的格子大小除以像素边长计算出像素个数, 即可获得自定义边长的格子 。

我的电脑说明书直接给出了屏幕点距(即像素边长)为0.2331mm,为了让像素个数为整数,故设定格子边长是23.31mm,即100个像素边长。理论上按照原始比例打印出来不用再测量边长。

4. 保存文件:

   在文本编辑器中保存文件并关闭编辑器。

5. 编译源代码:

   打开终端,并在终端中导航到包含 `generate_chessboard.cpp` 的目录。然后使用g++编译器编译源代码。

g++ generate_chessboard.cpp -o generate_chessboard `pkg-config --cflags --libs opencv`

   这将生成一个名为 `generate_chessboard` 的可执行文件。

6. 运行程序:

   运行生成的可执行文件以生成棋盘格图像。

   ./generate_chessboard

   执行此命令后,程序将生成名为 `chessboard.png` 的图像文件,其中包含了用于相机标定的黑白棋盘格。

7. 查看图像:

   你可以使用图像查看器,例如eog(Eye of GNOME)来查看生成的棋盘格图像:

   eog chessboard.png

这些步骤应该在Ubuntu 20.04上成功生成用于相机标定的黑白棋盘格图像。请确保你已经正确安装了OpenCV库并按照上述步骤执行了编译和运行操作。生成的图像将保存在当前工作目录中。

棋盘格标定板制作:在ubuntu20.04上,使用C++绘制。_第1张图片

你可能感兴趣的:(计算机视觉,ubuntu,算法,c++)