mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-20 10:57:45 +08:00
fix: 修复肉鸽编队偶现少选一个人的问题
fix https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/1417
This commit is contained in:
@@ -7491,11 +7491,19 @@
|
||||
},
|
||||
"Roguelike1FormationOperSelected": {
|
||||
"template": "empty.png",
|
||||
"templThreshold": 18000,
|
||||
"templThreshold": 1000,
|
||||
"templThreshold_Doc": "这个任务中作为符合range的像素点数量阈值",
|
||||
"maskRange_Doc": "拿来做H通道的范围",
|
||||
"maskRange": [
|
||||
95,
|
||||
105
|
||||
],
|
||||
"specificRect_Doc": "拿来做S、V通道的范围",
|
||||
"specificRect": [
|
||||
170,
|
||||
210,
|
||||
70,
|
||||
140
|
||||
]
|
||||
},
|
||||
"Roguelike1FormationConfirm": {
|
||||
|
||||
@@ -49,20 +49,24 @@ bool asst::RoguelikeFormationImageAnalyzer::selected_analyze(const Rect& roi)
|
||||
{
|
||||
cv::Mat img_roi = m_image(utils::make_rect<cv::Rect>(roi));
|
||||
cv::Mat hsv;
|
||||
cv::cvtColor(img_roi, hsv, cv::COLOR_BGR2HSV);
|
||||
|
||||
const auto selected_task_ptr = Task.get<MatchTaskInfo>("Roguelike1FormationOperSelected");
|
||||
cv::cvtColor(img_roi, hsv, cv::COLOR_BGR2HSV);
|
||||
std::vector<cv::Mat> channels;
|
||||
cv::split(hsv, channels);
|
||||
int mask_lowb = selected_task_ptr->mask_range.first;
|
||||
int mask_uppb = selected_task_ptr->mask_range.second;
|
||||
int h_low = selected_task_ptr->mask_range.first;
|
||||
int h_up = selected_task_ptr->mask_range.second;
|
||||
int s_low = selected_task_ptr->specific_rect.x;
|
||||
int s_up = selected_task_ptr->specific_rect.y;
|
||||
int v_low = selected_task_ptr->specific_rect.width;
|
||||
int v_up = selected_task_ptr->specific_rect.height;
|
||||
|
||||
cv::Mat bin;
|
||||
cv::inRange(hsv, cv::Scalar(h_low, s_low, v_low), cv::Scalar(h_up, s_up, v_up), bin);
|
||||
|
||||
int count = 0;
|
||||
auto& h_channel = channels.at(0);
|
||||
for (int i = 0; i != h_channel.rows; ++i) {
|
||||
for (int j = 0; j != h_channel.cols; ++j) {
|
||||
cv::uint8_t value = h_channel.at<cv::uint8_t>(i, j);
|
||||
if (mask_lowb < value && value < mask_uppb) {
|
||||
for (int i = 0; i != bin.rows; ++i) {
|
||||
for (int j = 0; j != bin.cols; ++j) {
|
||||
cv::uint8_t value = bin.at<cv::uint8_t>(i, j);
|
||||
if (value) {
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,13 +79,13 @@ int main([[maybe_unused]] int argc, char** argv)
|
||||
|
||||
//AsstAppendTask(ptr, "Award", nullptr);
|
||||
|
||||
AsstAppendTask(ptr, "Roguelike", R"(
|
||||
{
|
||||
"squad": "突击战术分队",
|
||||
"roles": "近卫",
|
||||
"core_char": "棘刺"
|
||||
}
|
||||
)");
|
||||
// AsstAppendTask(ptr, "Roguelike", R"(
|
||||
//{
|
||||
// "squad": "突击战术分队",
|
||||
// "roles": "近卫",
|
||||
// "core_char": "棘刺"
|
||||
//}
|
||||
//)");
|
||||
|
||||
//AsstAppendTask(ptr, "Copilot", R"(
|
||||
//{
|
||||
@@ -94,7 +94,7 @@ int main([[maybe_unused]] int argc, char** argv)
|
||||
//}
|
||||
//)");
|
||||
|
||||
//AsstAppendTask(ptr, "Debug", nullptr);
|
||||
AsstAppendTask(ptr, "Debug", nullptr);
|
||||
|
||||
AsstStart(ptr);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user