/
klischa
/
AstraScanner2
Обзор
Документация
Войти
/
klischa
/
AstraScanner2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
debug_chessboard.cpp
62 строки
3 KB
k k
feat(tests): добавлены тесты для всех компонентов и исправленыSettingsManagerTests
04 июн 2026, 10:44
04 июн 2026, 10:44
60dd183
Код
Авторство
О чём код?
#include <iostream> #include <opencv2/opencv.hpp> int main() { cv::Size frameSize(640, 480); cv::Size boardSize(9, 6); // Создаем белый фон cv::Mat frame(frameSize, CV_8UC3, cv::Scalar(255, 255, 255)); // Вычисляем размер квадрата int margin = 5; int availableWidth = frameSize.width - 2 * margin; int availableHeight = frameSize.height - 2 * margin; // Делаем квадраты достаточно большими для надежного обнаружения int squareWidth = availableWidth / (boardSize.width + 1); int squareHeight = availableHeight / (boardSize.height + 1); squareWidth = std::max(15, squareWidth); squareHeight = std::max(15, squareHeight); // Вычисляем начальную точку для центрирования int startX = (frameSize.width - (boardSize.width * squareWidth)) / 2; int startY = (frameSize.height - (boardSize.height * squareHeight)) / 2; std::cout << "Square size: " << squareWidth << "x" << squareHeight << std::endl; std::cout << "Start position: (" << startX << ", " << startY << ")" << std::endl; std::cout << "Frame size: " << frameSize.width << "x" << frameSize.height << std::endl; for (int row = 0; row < boardSize.height; ++row) { for (int col = 0; col < boardSize.width; ++col) { cv::Point top_left(startX + col * squareWidth, startY + row * squareHeight); cv::Point bottom_right(startX + (col + 1) * squareWidth, startY + (row + 1) * squareHeight); // Шахматный порядок - черные и белые квадраты cv::Scalar color = ((row + col) % 2 == 0) ? cv::Scalar(0, 0, 0) : cv::Scalar(255, 255, 255); cv::rectangle(frame, top_left, bottom_right, color, cv::FILLED); } } // Конвертируем в серый cv::Mat gray; cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY); // Пробуем найти шахматную доску std::vector<cv::Point2f> corners; bool found = cv::findChessboardCorners(gray, boardSize, corners, cv::CALIB_CB_ADAPTIVE_THRESH | cv::CALIB_CB_NORMALIZE_IMAGE | cv::CALIB_CB_FAST_CHECK); std::cout << "Found: " << found << std::endl; if (found) { std::cout << "Corners found: " << corners.size() << std::endl; } // Сохраняем изображение cv::imwrite("chessboard_test.png", frame); std::cout << "Saved chessboard_test.png" << std::endl; return 0; }