|
|
|
@ -1,3 +1,5 @@
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
|
class PixelRatioConverter {
|
|
|
|
|
public:
|
|
|
|
|
// 构造函数,传入两个现实中的物体面积和它们在图像中所占像素面积
|
|
|
|
@ -9,21 +11,36 @@ public:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取像素比例系数
|
|
|
|
|
double getPixelRatio() {
|
|
|
|
|
double ratio = (real_area1 / real_area2) * (pixel_area2 / pixel_area1);
|
|
|
|
|
double getPixelRatio() const {
|
|
|
|
|
double ratio = calculateAreaRatio() * calculatePixelRatio();
|
|
|
|
|
return ratio; // 返回像素比例系数
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据像素比例系数,计算下一步物体在图像中所占像素面积
|
|
|
|
|
int getNextPixelArea(int next_real_area) {
|
|
|
|
|
int getNextPixelArea(int next_real_area) const {
|
|
|
|
|
double ratio = this->getPixelRatio();
|
|
|
|
|
int next_pixel_area = static_cast<int>(next_real_area / ratio);
|
|
|
|
|
int next_pixel_area = calculateNextPixelArea(next_real_area, ratio);
|
|
|
|
|
return next_pixel_area; // 返回下一步物体在图像中所占像素面积
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
double real_area1; // 第一个现实中的物体面积
|
|
|
|
|
double real_area2; // 第二个现实中的物体面积
|
|
|
|
|
int pixel_area1; // 第一个物体在图像中所占像素面积
|
|
|
|
|
int pixel_area2; // 第二个物体在图像中所占像素面积
|
|
|
|
|
double real_area1; // 第一个现实中的物体面积
|
|
|
|
|
double real_area2; // 第二个现实中的物体面积
|
|
|
|
|
int pixel_area1; // 第一个物体在图像中所占像素面积
|
|
|
|
|
int pixel_area2; // 第二个物体在图像中所占像素面积
|
|
|
|
|
|
|
|
|
|
// 计算现实物体面积之间的比例系数
|
|
|
|
|
double calculateAreaRatio() const {
|
|
|
|
|
return real_area1 / real_area2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 计算像素面积之间的比例系数
|
|
|
|
|
double calculatePixelRatio() const {
|
|
|
|
|
return static_cast<double>(pixel_area2) / pixel_area1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据比例系数和下一步物体的实际面积,计算在图像中所占的像素面积
|
|
|
|
|
int calculateNextPixelArea(int next_real_area, double ratio) const {
|
|
|
|
|
return static_cast<int>(next_real_area / ratio);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|