forked from opencv/opencv
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
25 changed files
with
3,422 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
set(OPENCV_INTERACTIVECALIBRATION_DEPS opencv_core opencv_aruco opencv_highgui opencv_calib3d opencv_videoio) | ||
ocv_check_dependencies(${OPENCV_INTERACTIVECALIBRATION_DEPS}) | ||
|
||
if(NOT OCV_DEPENDENCIES_FOUND) | ||
return() | ||
endif() | ||
|
||
find_package(LAPACK) | ||
if(LAPACK_FOUND) | ||
find_file(LAPACK_HEADER "lapacke.h") | ||
if(LAPACK_HEADER) | ||
add_definitions(-DUSE_LAPACK) | ||
link_libraries(${LAPACK_LIBRARIES}) | ||
endif() | ||
endif() | ||
|
||
project(interactive-calibration) | ||
set(the_target opencv_interactive-calibration) | ||
|
||
ocv_target_include_directories(${the_target} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" "${OpenCV_SOURCE_DIR}/include/opencv") | ||
ocv_target_include_modules_recurse(${the_target} ${OPENCV_INTERACTIVECALIBRATION_DEPS}) | ||
|
||
file(GLOB SRCS *.cpp) | ||
file(GLOB HDRS *.h*) | ||
|
||
set(interactive-calibration_files ${SRCS} ${HDRS}) | ||
|
||
ocv_add_executable(${the_target} ${interactive-calibration_files}) | ||
ocv_target_link_libraries(${the_target} ${OPENCV_INTERACTIVECALIBRATION_DEPS}) | ||
|
||
set_target_properties(${the_target} PROPERTIES | ||
DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" | ||
ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} | ||
RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} | ||
INSTALL_NAME_DIR lib | ||
OUTPUT_NAME "opencv_interactive-calibration") | ||
|
||
if(ENABLE_SOLUTION_FOLDERS) | ||
set_target_properties(${the_target} PROPERTIES FOLDER "applications") | ||
endif() | ||
|
||
if(INSTALL_CREATE_DISTRIB) | ||
if(BUILD_SHARED_LIBS) | ||
install(TARGETS ${the_target} RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} CONFIGURATIONS Release COMPONENT dev) | ||
endif() | ||
else() | ||
install(TARGETS ${the_target} OPTIONAL RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} COMPONENT dev) | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
#ifndef CALIB_COMMON_HPP | ||
#define CALIB_COMMON_HPP | ||
|
||
#include <memory> | ||
#include <opencv2/core.hpp> | ||
#include <vector> | ||
#include <string> | ||
|
||
namespace calib | ||
{ | ||
#define OVERLAY_DELAY 1000 | ||
#define IMAGE_MAX_WIDTH 1280 | ||
#define IMAGE_MAX_HEIGHT 960 | ||
|
||
bool showOverlayMessage(const std::string& message); | ||
|
||
enum InputType { Video, Pictures }; | ||
enum InputVideoSource { Camera, File }; | ||
enum TemplateType { AcirclesGrid, Chessboard, chAruco, DoubleAcirclesGrid }; | ||
|
||
static const std::string mainWindowName = "Calibration"; | ||
static const std::string gridWindowName = "Board locations"; | ||
static const std::string consoleHelp = "Hot keys:\nesc - exit application\n" | ||
"s - save current data to .xml file\n" | ||
"r - delete last frame\n" | ||
"u - enable/disable applying undistortion" | ||
"d - delete all frames\n" | ||
"v - switch visualization"; | ||
|
||
static const double sigmaMult = 1.96; | ||
|
||
struct calibrationData | ||
{ | ||
cv::Mat cameraMatrix; | ||
cv::Mat distCoeffs; | ||
cv::Mat stdDeviations; | ||
cv::Mat perViewErrors; | ||
std::vector<cv::Mat> rvecs; | ||
std::vector<cv::Mat> tvecs; | ||
double totalAvgErr; | ||
cv::Size imageSize; | ||
|
||
std::vector<std::vector<cv::Point2f> > imagePoints; | ||
std::vector< std::vector<cv::Point3f> > objectPoints; | ||
|
||
std::vector<cv::Mat> allCharucoCorners; | ||
std::vector<cv::Mat> allCharucoIds; | ||
|
||
cv::Mat undistMap1, undistMap2; | ||
|
||
calibrationData() | ||
{ | ||
imageSize = cv::Size(IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT); | ||
} | ||
}; | ||
|
||
struct cameraParameters | ||
{ | ||
cv::Mat cameraMatrix; | ||
cv::Mat distCoeffs; | ||
cv::Mat stdDeviations; | ||
double avgError; | ||
|
||
cameraParameters(){} | ||
cameraParameters(cv::Mat& _cameraMatrix, cv::Mat& _distCoeffs, cv::Mat& _stdDeviations, double _avgError = 0) : | ||
cameraMatrix(_cameraMatrix), distCoeffs(_distCoeffs), stdDeviations(_stdDeviations), avgError(_avgError) | ||
{} | ||
}; | ||
|
||
struct captureParameters | ||
{ | ||
InputType captureMethod; | ||
InputVideoSource source; | ||
TemplateType board; | ||
cv::Size boardSize; | ||
int charucoDictName; | ||
int calibrationStep; | ||
float charucoSquareLenght, charucoMarkerSize; | ||
float captureDelay; | ||
float squareSize; | ||
float templDst; | ||
std::string videoFileName; | ||
bool flipVertical; | ||
int camID; | ||
int fps; | ||
cv::Size cameraResolution; | ||
int maxFramesNum; | ||
int minFramesNum; | ||
|
||
captureParameters() | ||
{ | ||
calibrationStep = 1; | ||
captureDelay = 500.f; | ||
maxFramesNum = 30; | ||
minFramesNum = 10; | ||
fps = 30; | ||
cameraResolution = cv::Size(IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT); | ||
} | ||
}; | ||
|
||
struct internalParameters | ||
{ | ||
double solverEps; | ||
int solverMaxIters; | ||
bool fastSolving; | ||
double filterAlpha; | ||
|
||
internalParameters() | ||
{ | ||
solverEps = 1e-7; | ||
solverMaxIters = 30; | ||
fastSolving = false; | ||
filterAlpha = 0.1; | ||
} | ||
}; | ||
} | ||
|
||
#endif |
Oops, something went wrong.