Skip to content

Commit 3f33ff4

Browse files
committed
update item printer material detector to use updated read_number_waterfill() with multiple filters
1 parent fa2b359 commit 3f33ff4

File tree

3 files changed

+50
-8
lines changed

3 files changed

+50
-8
lines changed

SerialPrograms/Source/NintendoSwitch/DevPrograms/TestProgramSwitch.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,12 +313,31 @@ void TestProgram::program(MultiSwitchProgramEnvironment& env, CancellableScope&
313313

314314
// std::terminate();
315315

316+
#if 1
317+
ImageRGB32 image("720p1.png");
318+
// auto image = feed.snapshot();
319+
320+
ItemPrinterMaterialDetector detector(COLOR_RED, Language::English);
321+
322+
std::vector<ImageFloatBox> boxes = {
323+
{0.485,0.176758,0.037,0.05}, {0.485,0.250977,0.037,0.05}, {0.485,0.325196,0.037,0.05}, {0.485,0.399415,0.037,0.05}, {0.485,0.473634,0.037,0.05}, {0.485,0.547853,0.037,0.05}, {0.485,0.622072,0.037,0.05}, {0.485,0.696291,0.037,0.05}, {0.485,0.77051,0.037,0.05}, {0.485,0.844729,0.037,0.05},
324+
// {0.39,0.176758,0.025,0.05}, {0.39,0.250977,0.025,0.05}, {0.39,0.325196,0.025,0.05}, {0.39,0.399415,0.025,0.05}, {0.39,0.473634,0.025,0.05}, {0.39,0.547853,0.025,0.05}, {0.39,0.622072,0.025,0.05}, {0.39,0.696291,0.025,0.05}, {0.39,0.77051,0.025,0.05}, {0.39,0.844729,0.025,0.05},
325+
};
326+
for (ImageFloatBox box : boxes){
327+
detector.read_number(console.logger(), env.inference_dispatcher(), image, box);
328+
}
329+
330+
#endif
331+
332+
#if 0
333+
316334
ImageRGB32 image("20250323-011605651979.png");
317335

318336
DialogBoxDetector detector;
319337
detector.make_overlays(overlays);
320338
cout << detector.detect(image) << endl;
321339

340+
#endif
322341

323342

324343
#if 0

SerialPrograms/Source/PokemonSV/Inference/ItemPrinter/PokemonSV_ItemPrinterMaterialDetector.cpp

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include "NintendoSwitch/Commands/NintendoSwitch_Commands_PushButtons.h"
1919
#include "PokemonSV_ItemPrinterMaterialDetector.h"
2020

21-
//#include <iostream>
21+
// #include <iostream>
2222

2323
namespace PokemonAutomation{
2424
namespace NintendoSwitch{
@@ -69,7 +69,9 @@ std::array<ImageFloatBox, 10> ItemPrinterMaterialDetector::Material_Boxes(ImageF
6969
for (size_t i = 0; i < 10; i++){
7070
double y = initial_y + i*y_spacing;
7171
material_boxes[i] = ImageFloatBox(x, y, width, height);
72+
// std::cout << "{" << x << "," << y << "," << width << "," << height << "}, ";
7273
}
74+
// std::cout << std::endl;
7375
return material_boxes;
7476
}
7577

@@ -98,9 +100,30 @@ int16_t ItemPrinterMaterialDetector::read_number(
98100

99101
int16_t number;
100102
if (is_dark_text_light_background){
101-
number = (int16_t)OCR::read_number_waterfill(logger, cropped, 0xff000000, 0xff808080);
103+
const std::vector<std::pair<uint32_t, uint32_t>> filters = {
104+
{0xff000000, 0xff909090},
105+
{0xff000000, 0xff808080},
106+
{0xff000000, 0xff707070},
107+
{0xff000000, 0xff606060},
108+
{0xff000000, 0xff505050},
109+
{0xff000000, 0xff404040},
110+
{0xff000000, 0xff303030},
111+
{0xff000000, 0xff202020},
112+
{0xff000000, 0xff101010},
113+
};
114+
number = (int16_t)OCR::read_number_waterfill(logger, cropped, filters, 24);
102115
}else{
103-
number = (int16_t)OCR::read_number_waterfill(logger, cropped, 0xff808080, 0xffffffff);
116+
const std::vector<std::pair<uint32_t, uint32_t>> filters = {
117+
// {0xff808080, 0xffffffff},
118+
{0xff909090, 0xffffffff},
119+
{0xffa0a0a0, 0xffffffff},
120+
{0xffb0b0b0, 0xffffffff},
121+
{0xffc0c0c0, 0xffffffff},
122+
{0xffd0d0d0, 0xffffffff},
123+
{0xffe0e0e0, 0xffffffff},
124+
{0xfff0f0f0, 0xffffffff},
125+
};
126+
number = (int16_t)OCR::read_number_waterfill(logger, cropped, filters, 24);
104127
}
105128

106129
if (number < 1 || number > 999){

SerialPrograms/Source/PokemonSV/Inference/ItemPrinter/PokemonSV_ItemPrinterMaterialDetector.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ class ItemPrinterMaterialDetector{
7474
int8_t row_index
7575
) const;
7676

77-
78-
private:
7977
int16_t read_number(
8078
Logger& logger, AsyncDispatcher& dispatcher,
8179
const ImageViewRGB32& screen, const ImageFloatBox& box
@@ -85,9 +83,11 @@ class ItemPrinterMaterialDetector{
8583
private:
8684
Color m_color;
8785
Language m_language;
88-
std::array<ImageFloatBox, 10> m_box_mat_value;
89-
std::array<ImageFloatBox, 10> m_box_mat_quantity;
90-
std::array<ImageFloatBox, 10> m_box_mat_name;
86+
std::array<ImageFloatBox, 10> m_box_mat_value; // {0.39,0.176758,0.025,0.05}, {0.39,0.250977,0.025,0.05}, {0.39,0.325196,0.025,0.05}, {0.39,0.399415,0.025,0.05}, {0.39,0.473634,0.025,0.05}, {0.39,0.547853,0.025,0.05}, {0.39,0.622072,0.025,0.05}, {0.39,0.696291,0.025,0.05}, {0.39,0.77051,0.025,0.05}, {0.39,0.844729,0.025,0.05},
87+
std::array<ImageFloatBox, 10> m_box_mat_quantity; // {0.485,0.176758,0.037,0.05}, {0.485,0.250977,0.037,0.05}, {0.485,0.325196,0.037,0.05}, {0.485,0.399415,0.037,0.05}, {0.485,0.473634,0.037,0.05}, {0.485,0.547853,0.037,0.05}, {0.485,0.622072,0.037,0.05}, {0.485,0.696291,0.037,0.05}, {0.485,0.77051,0.037,0.05}, {0.485,0.844729,0.037,0.05},
88+
std::array<ImageFloatBox, 10> m_box_mat_name; // {0.09,0.176758,0.275,0.05}, {0.09,0.250977,0.275,0.05}, {0.09,0.325196,0.275,0.05}, {0.09,0.399415,0.275,0.05}, {0.09,0.473634,0.275,0.05}, {0.09,0.547853,0.275,0.05}, {0.09,0.622072,0.275,0.05}, {0.09,0.696291,0.275,0.05}, {0.09,0.77051,0.275,0.05}, {0.09,0.844729,0.275,0.05},
89+
90+
9191
};
9292

9393

0 commit comments

Comments
 (0)