test end of session
This commit is contained in:
parent
ebf1f7480f
commit
8dbd79d5a4
|
|
@ -100,7 +100,17 @@ void processFrame(cv::Mat& frame)
|
|||
// Apply image processing steps
|
||||
cv::Mat processedFrame = enhanceImage(frame);
|
||||
|
||||
// Create ArUco marker detector
|
||||
// Create ArUco marker detector with modified parameters
|
||||
cv::Ptr<cv::aruco::DetectorParameters> parameters = cv::aruco::DetectorParameters::create();
|
||||
parameters->adaptiveThreshWinSizeMin = 3;
|
||||
parameters->adaptiveThreshWinSizeMax = 23;
|
||||
parameters->adaptiveThreshWinSizeStep = 5;
|
||||
parameters->minMarkerPerimeterRate = 0.005;
|
||||
parameters->maxMarkerPerimeterRate = 3.0;
|
||||
parameters->perspectiveRemoveIgnoredMarginPerCell = 0.05;
|
||||
parameters->cornerRefinementMethod = cv::aruco::CORNER_REFINE_SUBPIX;
|
||||
parameters->polygonalApproxAccuracyRate = 0.025;
|
||||
|
||||
cv::Ptr<cv::aruco::Dictionary> dictionary =
|
||||
cv::aruco::getPredefinedDictionary(cv::aruco::DICT_4X4_1000);
|
||||
std::vector<int> markerIds;
|
||||
|
|
@ -108,7 +118,30 @@ void processFrame(cv::Mat& frame)
|
|||
std::vector<cv::Vec3d> rvecs, tvecs;
|
||||
|
||||
// Detect markers in the image
|
||||
cv::aruco::detectMarkers(processedFrame, dictionary, markerCorners, markerIds);
|
||||
cv::aruco::detectMarkers(processedFrame, dictionary, markerCorners, markerIds, parameters);
|
||||
|
||||
// If no markers are detected, try multi-scale detection
|
||||
if (markerIds.empty())
|
||||
{
|
||||
for (double scale = 0.5; scale <= 2.0; scale += 0.5)
|
||||
{
|
||||
cv::Mat scaledFrame;
|
||||
cv::resize(processedFrame, scaledFrame, cv::Size(), scale, scale);
|
||||
cv::aruco::detectMarkers(scaledFrame, dictionary, markerCorners, markerIds, parameters);
|
||||
if (!markerIds.empty())
|
||||
{
|
||||
// Scale back the marker corners to the original frame size
|
||||
for (auto& corners : markerCorners)
|
||||
{
|
||||
for (auto& corner : corners)
|
||||
{
|
||||
corner /= scale;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Draw detected markers
|
||||
if (!markerIds.empty())
|
||||
|
|
|
|||
|
|
@ -151,6 +151,29 @@ void processFrame(cv::Mat& frame, std::map<int, cv::Point2f>& markerPositions, c
|
|||
// Detect markers in the image
|
||||
cv::aruco::detectMarkers(processedFrame, dictionary, markerCorners, markerIds, parameters);
|
||||
|
||||
// If no markers are detected, try multi-scale detection
|
||||
if (markerIds.empty())
|
||||
{
|
||||
for (double scale = 0.5; scale <= 2.0; scale += 0.5)
|
||||
{
|
||||
cv::Mat scaledFrame;
|
||||
cv::resize(processedFrame, scaledFrame, cv::Size(), scale, scale);
|
||||
cv::aruco::detectMarkers(scaledFrame, dictionary, markerCorners, markerIds, parameters);
|
||||
if (!markerIds.empty())
|
||||
{
|
||||
// Scale back the marker corners to the original frame size
|
||||
for (auto& corners : markerCorners)
|
||||
{
|
||||
for (auto& corner : corners)
|
||||
{
|
||||
corner /= scale;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Draw detected markers
|
||||
if (!markerIds.empty())
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue