Skip to content

Commit

Permalink
移除所有using namespace std;的写法
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaoxi-scut committed May 31, 2024
1 parent 654b966 commit 77a342c
Show file tree
Hide file tree
Showing 33 changed files with 776 additions and 895 deletions.
36 changes: 17 additions & 19 deletions extra/combo/test/armor_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
#include "rmvl/core/timer.hpp"

using namespace rm;
using namespace std;
using namespace cv;

namespace rm_test
{
Expand All @@ -40,17 +38,17 @@ class BuildArmorTest : public testing::Test
*
* @param angle 倾斜角
* @param bias 偏置
* @return LightBlob::ptr
* @return LightBlob::ptr
*/
LightBlob::ptr buildBlob(float angle, Point bias = Point())
LightBlob::ptr buildBlob(float angle, cv::Point bias = cv::Point())
{
Point base(500, 500);
Point base_bias(static_cast<int>(110 * sin(deg2rad(angle))),
static_cast<int>(110 * -cos(deg2rad(angle))));
Mat src = Mat::zeros(Size(2000, 2000), CV_8UC1);
line(src, base + bias, base + base_bias + bias, Scalar(255), 25);
vector<vector<Point>> contours;
findContours(src, contours, RETR_EXTERNAL, CHAIN_APPROX_NONE);
cv::Point base(500, 500);
cv::Point base_bias(static_cast<int>(110 * sin(deg2rad(angle))),
static_cast<int>(110 * -cos(deg2rad(angle))));
cv::Mat src = cv::Mat::zeros(cv::Size(2000, 2000), CV_8UC1);
line(src, base + bias, base + base_bias + bias, cv::Scalar(255), 25);
std::vector<std::vector<cv::Point>> contours;
findContours(src, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE);
return LightBlob::make_feature(contours.front());
}
};
Expand All @@ -62,7 +60,7 @@ TEST_F(BuildArmorTest, incorrect_blob)
Armor::ptr armor = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
EXPECT_FALSE(armor != nullptr);
// 一个灯条为假
vector<Point> null_contour;
std::vector<cv::Point> null_contour;
right_blob = LightBlob::make_feature(null_contour);
armor.reset();
armor = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
Expand All @@ -73,15 +71,15 @@ TEST_F(BuildArmorTest, different_blob_distance)
{
LightBlob::ptr right_blob;
// 小间距
right_blob = buildBlob(0, Point2f(30, 0));
right_blob = buildBlob(0, cv::Point2f(30, 0));
Armor::ptr armor1 = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
EXPECT_EQ(armor1, nullptr);
// 正常间距
right_blob = buildBlob(0, Point2f(200, 0));
right_blob = buildBlob(0, cv::Point2f(200, 0));
Armor::ptr armor2 = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
EXPECT_NE(armor2, nullptr);
// 大间距
right_blob = buildBlob(0, Point2f(1000, 0));
right_blob = buildBlob(0, cv::Point2f(1000, 0));
Armor::ptr armor3 = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
EXPECT_EQ(armor3, nullptr);
}
Expand All @@ -92,12 +90,12 @@ TEST_F(BuildArmorTest, different_blob_tiltAngle)
LightBlob::ptr right_blob;
// 小倾角
left_blob = buildBlob(5);
right_blob = buildBlob(5, Point(200, 10));
right_blob = buildBlob(5, cv::Point(200, 10));
Armor::ptr armor1 = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
EXPECT_NE(armor1, nullptr);
// 大倾角
left_blob = buildBlob(45);
right_blob = buildBlob(45, Point(180, 180));
right_blob = buildBlob(45, cv::Point(180, 180));
Armor::ptr armor2 = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
EXPECT_EQ(armor2, nullptr);
}
Expand All @@ -106,11 +104,11 @@ TEST_F(BuildArmorTest, different_blob_angle)
{
LightBlob::ptr right_blob;
// 小夹角
right_blob = buildBlob(5, Point(200, 0));
right_blob = buildBlob(5, cv::Point(200, 0));
Armor::ptr armor1 = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
EXPECT_NE(armor1, nullptr);
// 大夹角
right_blob = buildBlob(15, Point(200, 0));
right_blob = buildBlob(15, cv::Point(200, 0));
Armor::ptr armor2 = Armor::make_combo(left_blob, right_blob, GyroData(), Timer::now());
EXPECT_EQ(armor2, nullptr);
}
Expand Down
20 changes: 9 additions & 11 deletions extra/combo/test/rune_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@
#include "rmvl/core/timer.hpp"

using namespace rm;
using namespace std;
using namespace cv;

namespace rm_test
{
Expand All @@ -40,7 +38,7 @@ TEST(BuildRuneTest, incorrect_rune_feature)
Rune::ptr rune1 = Rune::make_combo(nullptr, nullptr, GyroData(), Timer::now());
EXPECT_FALSE(rune1);
// 均为假
vector<Point> none_vec;
std::vector<cv::Point> none_vec;
RuneTarget::ptr rune_target = RuneTarget::make_feature(none_vec, false);
RuneCenter::ptr rune_center = RuneCenter::make_feature(none_vec);
combo::ptr combo_2 = Rune::make_combo(rune_target, rune_center, GyroData(), Timer::now());
Expand All @@ -49,8 +47,8 @@ TEST(BuildRuneTest, incorrect_rune_feature)

TEST(BuildRuneTest, calculate_rune_angle_0)
{
auto rune_target = RuneTarget::make_feature(Point2f(800, 500), false);
auto rune_center = RuneCenter::make_feature(Point2f(500, 500));
auto rune_target = RuneTarget::make_feature(cv::Point2f(800, 500), false);
auto rune_center = RuneCenter::make_feature(cv::Point2f(500, 500));
auto rune = Rune::make_combo(rune_target, rune_center, GyroData(), Timer::now());
EXPECT_TRUE(rune != nullptr);
// 角度判断
Expand All @@ -59,8 +57,8 @@ TEST(BuildRuneTest, calculate_rune_angle_0)

TEST(BuildRuneTest, calculate_rune_angle_45)
{
auto rune_target = RuneTarget::make_feature(Point2f(712, 288), false);
auto rune_center = RuneCenter::make_feature(Point2f(500, 500));
auto rune_target = RuneTarget::make_feature(cv::Point2f(712, 288), false);
auto rune_center = RuneCenter::make_feature(cv::Point2f(500, 500));
auto rune = Rune::make_combo(rune_target, rune_center, GyroData(), Timer::now());
EXPECT_TRUE(rune != nullptr);
// 角度判断
Expand All @@ -69,8 +67,8 @@ TEST(BuildRuneTest, calculate_rune_angle_45)

TEST(BuildRuneTest, calculate_rune_angle_90)
{
auto rune_target = RuneTarget::make_feature(Point2f(500, 200), false);
auto rune_center = RuneCenter::make_feature(Point2f(500, 500));
auto rune_target = RuneTarget::make_feature(cv::Point2f(500, 200), false);
auto rune_center = RuneCenter::make_feature(cv::Point2f(500, 500));
auto rune = Rune::make_combo(rune_target, rune_center, GyroData(), Timer::now());
EXPECT_TRUE(rune != nullptr);
// 角度判断
Expand All @@ -79,8 +77,8 @@ TEST(BuildRuneTest, calculate_rune_angle_90)

TEST(BuildRuneTest, calculate_rune_angle_minus_90)
{
auto rune_target = RuneTarget::make_feature(Point2f(500, 800), false);
auto rune_center = RuneCenter::make_feature(Point2f(500, 500));
auto rune_target = RuneTarget::make_feature(cv::Point2f(500, 800), false);
auto rune_center = RuneCenter::make_feature(cv::Point2f(500, 500));
auto rune = Rune::make_combo(rune_target, rune_center, GyroData(), Timer::now());
EXPECT_TRUE(rune != nullptr);
// 角度判断
Expand Down
10 changes: 4 additions & 6 deletions extra/detector/src/gyro_detector/inference.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,15 @@
#include "rmvl/core/ew_topsis.hpp"

using namespace rm;
using namespace std;
using namespace cv;

unordered_map<size_t, size_t> GyroDetector::ewTopsisInference(group::ptr group, const vector<combo::ptr> &combos)
std::unordered_map<size_t, size_t> GyroDetector::ewTopsisInference(group::ptr group, const std::vector<combo::ptr> &combos)
{
auto trackers = group->data();
auto pGyroGroup = GyroGroup::cast(group);
if (trackers.empty() || combos.empty())
return unordered_map<size_t, size_t>();
return {};
// (a) 生成样本指标矩阵,(指标:距离,角度差)
vector<vector<float>> samples(trackers.size() * combos.size());
std::vector<std::vector<float>> samples(trackers.size() * combos.size());
for (size_t c = 0; c < combos.size(); ++c)
{
for (size_t t = 0; t < trackers.size(); ++t)
Expand All @@ -42,7 +40,7 @@ unordered_map<size_t, size_t> GyroDetector::ewTopsisInference(group::ptr group,
ew.inference();
auto arr = ew.finalIndex();
// (c) 数据导出并提取出指定的下标
unordered_map<size_t, size_t> target;
std::unordered_map<size_t, size_t> target;
target.reserve(combos.size());
// 每个 combos 都在 trackers 找到得分最高的一个作为目标
for (size_t i = 0; i < combos.size(); ++i)
Expand Down
56 changes: 29 additions & 27 deletions extra/detector/test/armor_detector_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@

#include "armor_detector_test.h"

using namespace rm_test;
using namespace rm;
using namespace std;
using namespace cv;

namespace rm_test
{

// 单装甲板独立测试功能
TEST_F(ArmorDetectorTest, single_armor_function_test)
{
Point center = Point(300, 300);
cv::Point center = cv::Point(300, 300);
buildArmorImg(center, 5);
// imshow("src", src);
// waitKey(0);
Expand All @@ -39,7 +39,7 @@ TEST_F(ArmorDetectorTest, single_armor_function_test)
// 单装甲板多灯条干扰
TEST_F(ArmorDetectorTest, single_armor_more_blob_disturb)
{
Point center(600, 500);
cv::Point center(600, 500);
// 单装甲板区域内有灯条 ( /\/ )
buildArmorImg(center, 0);
buildBlobImg(7, center);
Expand All @@ -48,9 +48,9 @@ TEST_F(ArmorDetectorTest, single_armor_more_blob_disturb)
EXPECT_TRUE(trackers.empty());
EXPECT_TRUE(info.combos.empty());
// 单装甲板侧面有反向倾斜灯条 ( /·/ \ )
src = Mat::zeros(Size(1280, 1024), CV_8UC3);
src = cv::Mat::zeros(cv::Size(1280, 1024), CV_8UC3);
buildArmorImg(center, 5);
buildBlobImg(-15, Point(1000, 480));
buildBlobImg(-15, cv::Point(1000, 480));
// imshow("src", src);
// waitKey(0);
info = p_detector->detect(groups, src, RED, GyroData(), timer.now());
Expand All @@ -62,9 +62,9 @@ TEST_F(ArmorDetectorTest, single_armor_more_blob_disturb)
else
FAIL();
// 单装甲板区域上方有灯条 ( /`/ )
src = Mat::zeros(Size(1280, 1024), CV_8UC3);
src = cv::Mat::zeros(cv::Size(1280, 1024), CV_8UC3);
buildArmorImg(center, 5);
buildBlobImg(-15, Point(600, 200));
buildBlobImg(-15, cv::Point(600, 200));
// imshow("src", src);
// waitKey(0);
info = p_detector->detect(groups, src, RED, GyroData(), timer.now());
Expand All @@ -76,10 +76,10 @@ TEST_F(ArmorDetectorTest, single_armor_more_blob_disturb)
else
FAIL();
// 单装甲板左右有倾斜方向相反的灯条 ( / |·| \ )
src = Mat::zeros(Size(1280, 1024), CV_8UC3);
src = cv::Mat::zeros(cv::Size(1280, 1024), CV_8UC3);
buildArmorImg(center, 0);
buildBlobImg(10, Point(200, 450));
buildBlobImg(-10, Point(1000, 450));
buildBlobImg(10, cv::Point(200, 450));
buildBlobImg(-10, cv::Point(1000, 450));
// imshow("src", src);
// waitKey(0);
info = p_detector->detect(groups, src, RED, GyroData(), timer.now());
Expand All @@ -94,9 +94,9 @@ TEST_F(ArmorDetectorTest, single_armor_more_blob_disturb)
// 多装甲板独立
TEST_F(ArmorDetectorTest, more_armor_independence)
{
buildArmorImg(Point(200, 100), 5);
buildArmorImg(Point(500, 300), 0);
buildArmorImg(Point(800, 500), -7);
buildArmorImg(cv::Point(200, 100), 5);
buildArmorImg(cv::Point(500, 300), 0);
buildArmorImg(cv::Point(800, 500), -7);

auto info = p_detector->detect(groups, src, RED, GyroData(), timer.now());

Expand All @@ -107,45 +107,47 @@ TEST_F(ArmorDetectorTest, more_armor_independence)
EXPECT_EQ(info.combos.size(), 3);
if (info.combos.size() == 3)
{
EXPECT_LE(getDistance(info.combos[0]->getCenter(), Point(200, 100)), 10);
EXPECT_LE(getDistance(info.combos[1]->getCenter(), Point(500, 300)), 10);
EXPECT_LE(getDistance(info.combos[2]->getCenter(), Point(800, 500)), 10);
EXPECT_LE(getDistance(info.combos[0]->getCenter(), cv::Point(200, 100)), 10);
EXPECT_LE(getDistance(info.combos[1]->getCenter(), cv::Point(500, 300)), 10);
EXPECT_LE(getDistance(info.combos[2]->getCenter(), cv::Point(800, 500)), 10);
}
}

// 多装甲板交错干扰
TEST_F(ArmorDetectorTest, more_armor_disturb)
{
auto reset = [this]() {
src = Mat::zeros(Size(1280, 1024), CV_8UC3);
src = cv::Mat::zeros(cv::Size(1280, 1024), CV_8UC3);
};
// 4 灯条补给站
buildBlobImg(0, Point(100, 500));
buildBlobImg(0, Point(135, 500));
buildBlobImg(0, Point(170, 500));
buildBlobImg(0, Point(205, 500));
buildBlobImg(0, cv::Point(100, 500));
buildBlobImg(0, cv::Point(135, 500));
buildBlobImg(0, cv::Point(170, 500));
buildBlobImg(0, cv::Point(205, 500));
// imshow("src", src);
// waitKey(0);
auto info = p_detector->detect(groups, src, BLUE, GyroData(), timer.now());
EXPECT_TRUE(info.combos.empty());
// 正对 2 装甲板倾角相反
reset();
buildArmorImg(Point(300, 500), 8);
buildArmorImg(Point(800, 500), -8);
buildArmorImg(cv::Point(300, 500), 8);
buildArmorImg(cv::Point(800, 500), -8);
// imshow("src", src);
// waitKey(0);
info = p_detector->detect(groups, src, RED, GyroData(), timer.now());

EXPECT_EQ(info.combos.size(), 2);
// 2 装甲板上下相距较近、有部分交错
reset();
buildArmorImg(Point(300, 500), 3);
buildArmorImg(Point(440, 400), 3);
buildArmorImg(cv::Point(300, 500), 3);
buildArmorImg(cv::Point(440, 400), 3);
// imshow("src", src);
// waitKey(0);
info = p_detector->detect(groups, src, RED, GyroData(), timer.now());

EXPECT_EQ(info.combos.size(), 2);
}

} // namespace rm_test

#endif
28 changes: 15 additions & 13 deletions extra/detector/test/armor_match_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@

#include "armor_detector_test.h"

using namespace rm_test;
using namespace rm;
using namespace std;
using namespace cv;

namespace rm_test
{

// 较多追踪器与较少装甲板匹配策略功能验证
TEST_F(ArmorDetectorTest, more_tracker_match_less_armor)
{
buildArmorImg(Point(200, 800), -5.f);
buildArmorImg(Point(600, 400), 5.f);
buildArmorImg(cv::Point(200, 800), -5.f);
buildArmorImg(cv::Point(600, 400), 5.f);
p_detector->detect(groups, src, RED, GyroData(), timer.now());
resetImg();
buildArmorImg(Point(610, 405), 3.f);
buildArmorImg(cv::Point(610, 405), 3.f);
auto info = p_detector->detect(groups, src, RED, GyroData(), timer.now());

auto &trackers = groups.front()->data();
Expand All @@ -42,10 +42,10 @@ TEST_F(ArmorDetectorTest, more_tracker_match_less_armor)
TEST_F(ArmorDetectorTest, tracker_match_an_equal_number_of_armor)
{
// 1 追踪器 1 帧间距离较近的装甲板
buildArmorImg(Point(200, 800), -5.f);
buildArmorImg(cv::Point(200, 800), -5.f);
auto info = p_detector->detect(groups, src, RED, GyroData(), timer.now());
resetImg();
buildArmorImg(Point(210, 805), -7.f);
buildArmorImg(cv::Point(210, 805), -7.f);
p_detector->detect(groups, src, RED, GyroData(), timer.now());

auto &trackers = groups.front()->data();
Expand All @@ -54,10 +54,10 @@ TEST_F(ArmorDetectorTest, tracker_match_an_equal_number_of_armor)
// 1 追踪器 1 帧间距离较远的装甲板
resetImg();
resetDetector();
buildArmorImg(Point(200, 800), -5.f);
buildArmorImg(cv::Point(200, 800), -5.f);
info = p_detector->detect(groups, src, RED, GyroData(), timer.now());
resetImg();
buildArmorImg(Point(1000, 200), -7.f);
buildArmorImg(cv::Point(1000, 200), -7.f);
info = p_detector->detect(groups, src, RED, GyroData(), timer.now());

trackers = groups.front()->data();
Expand All @@ -71,11 +71,11 @@ TEST_F(ArmorDetectorTest, tracker_match_an_equal_number_of_armor)
// 较少追踪器与较多装甲板匹配策略功能验证
TEST_F(ArmorDetectorTest, less_tracker_match_more_armor)
{
buildArmorImg(Point(600, 400), 5.f);
buildArmorImg(cv::Point(600, 400), 5.f);
auto info = p_detector->detect(groups, src, RED, GyroData(), timer.now());
resetImg();
buildArmorImg(Point(200, 800), -5.f);
buildArmorImg(Point(610, 405), 3.f);
buildArmorImg(cv::Point(200, 800), -5.f);
buildArmorImg(cv::Point(610, 405), 3.f);
info = p_detector->detect(groups, src, RED, GyroData(), timer.now());

auto &trackers = groups.front()->data();
Expand All @@ -86,4 +86,6 @@ TEST_F(ArmorDetectorTest, less_tracker_match_more_armor)
EXPECT_EQ(trackers[1]->getVanishNumber(), 0);
}

} // namespace rm_test

#endif // HAVE_RMVL_ARMOR_DETECTOR
Loading

0 comments on commit 77a342c

Please sign in to comment.