規則性あるし、自動生成できるよねってことでソース書いた
OpenCVを設定して
これをchessboard.hというファイルを作ってそこにコピペすればいいだけです
// // chessboard.h // // Created by tanjoin on 01/23/13. // Copyright 2013 tanjoin. All rights reserved. // #ifndef CHESSBOARD_H_ #define CHESSBOARD_H_ // OpenCV Library #include <opencv2/opencv.hpp> class Chessboard { public: // チェースボードを作成する static void create(const cv::Size& image_size, const cv::Size& block_size, const cv::Vec3b& color, cv::Mat& dst) { dst = cv::Mat(image_size, CV_8UC3); bool x_flag = false; bool y_flag = false; for (int y = 0; y < image_size.height; y++) { if (y % block_size.height == 0) { y_flag = !y_flag; } x_flag = y_flag; for (int x = 0; x < image_size.width; x++) { if (x % block_size.width == 0) { x_flag = !x_flag; } if (x_flag) { dst.at<cv::Vec3b>(y, x) = color; } else { dst.at<cv::Vec3b>(y, x) = cv::Vec3b(255, 255, 255); } } } } }; #endif // CHESSBOARD_H_
サンプル実行結果
// // main.cpp // // Created by tanjoin on 01/17/23. // Copyright 2013 tanjoin. All rights reserved. // // C++ Library #include <cstdlib> // Own Library #include "chessboard.h" int main(void) { cv::Mat dst; Chessboard::create(cv::Size(300, 300), cv::Size(10, 10), cv::Vec3b(127, 127, 127), dst); cv::Mat dst2; Chessboard::create(cv::Size(200, 200), cv::Size(150, 150), cv::Vec3b(127, 127, 127), dst2); cv::Mat dst3; Chessboard::create(cv::Size(100, 200), cv::Size(10, 50), cv::Vec3b(127, 127, 127), dst3); cv::imshow("dst", dst); cv::imshow("dst2", dst2); cv::imshow("dst3", dst3); cv::waitKey(0); return EXIT_SUCCESS; }