mirror of
https://github.com/azaion/autopilot.git
synced 2026-04-22 22:16:33 +00:00
51 lines
1.5 KiB
C++
51 lines
1.5 KiB
C++
#include "aiengineinference.h"
|
|
|
|
|
|
AiEngineInference::AiEngineInference(QString modelPath, QObject *parent)
|
|
: QObject{parent},
|
|
mModelPath(modelPath),
|
|
mActive(false)
|
|
{}
|
|
|
|
|
|
bool AiEngineInference::isActive(void)
|
|
{
|
|
return mActive;
|
|
}
|
|
|
|
|
|
cv::Mat AiEngineInference::resizeAndPad(const cv::Mat& src)
|
|
{
|
|
// Calculate the aspect ratio
|
|
float aspectRatio = static_cast<float>(src.cols) / src.rows;
|
|
|
|
// Determine new size while maintaining aspect ratio
|
|
int newWidth = src.cols;
|
|
int newHeight = src.rows;
|
|
if (src.cols > INFERENCE_SQUARE_WIDTH || src.rows > INFERENCE_SQUARE_HEIGHT) {
|
|
if (aspectRatio > 1)
|
|
{
|
|
// Width is greater than height
|
|
newWidth = INFERENCE_SQUARE_WIDTH;
|
|
newHeight = static_cast<int>(INFERENCE_SQUARE_WIDTH / aspectRatio);
|
|
}
|
|
else {
|
|
// Height is greater than or equal to width
|
|
newHeight = INFERENCE_SQUARE_HEIGHT;
|
|
newWidth = static_cast<int>(INFERENCE_SQUARE_HEIGHT * aspectRatio);
|
|
}
|
|
}
|
|
|
|
// Resize the original image if needed
|
|
cv::Mat resized;
|
|
cv::resize(src, resized, cv::Size(newWidth, newHeight));
|
|
|
|
// Create a new 640x640 image with a black background
|
|
cv::Mat output(INFERENCE_SQUARE_HEIGHT, INFERENCE_SQUARE_WIDTH, src.type(), cv::Scalar(0, 0, 0));
|
|
|
|
// Copy the resized image to the top-left corner of the new image
|
|
resized.copyTo(output(cv::Rect(0, 0, resized.cols, resized.rows)));
|
|
|
|
return output;
|
|
}
|