@@ -37,9 +37,16 @@ bool is_kill_icon(
3737 WaterfillObject& object,
3838 const WaterfillObject& red, const WaterfillObject& white
3939){
40+ // cout << "is_kill_icon" << endl;
4041// cout << red.min_x << "-" << red.max_x << ", " << white.min_y << "-" << white.max_y << endl;
4142
42- // cout << "is_kill_icon" << endl;
43+ #if 0
44+ static int c = 0;
45+ object = red;
46+ object.merge_assume_no_overlap(white);
47+ extract_box_reference(image, object).save("test-" + std::to_string(c++) + ".png");
48+ #endif
49+
4350 if (red.max_y >= white.min_y ){
4451// cout << "bad y" << endl;
4552 return false ;
@@ -56,8 +63,6 @@ bool is_kill_icon(
5663 object = red;
5764 object.merge_assume_no_overlap (white);
5865
59- // extract_box_reference(image, object).save("test.png");
60-
6166 if (object.width () < 18 || object.height () < 18 ){
6267// cout << "too small: " << object.width() << endl;
6368 return false ;
@@ -91,6 +96,8 @@ void LetsGoKillDetector::make_overlays(VideoOverlaySet& items) const{
9196bool LetsGoKillDetector::detect (const ImageViewRGB32& screen){
9297 using namespace Kernels ::Waterfill;
9398
99+ size_t size_threshold = (size_t )(10 . * screen.total_pixels () / 2073600 );
100+
94101 ImageViewRGB32 region = extract_box_reference (screen, m_box);
95102 std::vector<WaterfillObject> reds;
96103 std::vector<WaterfillObject> whites;
@@ -99,14 +106,24 @@ bool LetsGoKillDetector::detect(const ImageViewRGB32& screen){
99106 std::vector<PackedBinaryMatrix> matrices = compress_rgb32_to_binary_range (
100107 region,
101108 {
109+ {0xff801e1e , 0xffff5f5f },
110+ {0xff901e1e , 0xffff5f5f },
111+ {0xffa01e1e , 0xffff5f5f },
112+ {0xffb01e1e , 0xffff5f5f },
113+ {0xffc01e1e , 0xffff5f5f },
114+ {0xffd01e1e , 0xffff5f5f },
102115 {0xff801e1e , 0xffff7f7f },
103- {0xffb31e1e , 0xffff7f7f },
116+ {0xff901e1e , 0xffff7f7f },
117+ {0xffa01e1e , 0xffff7f7f },
118+ {0xffb01e1e , 0xffff7f7f },
119+ {0xffc01e1e , 0xffff7f7f },
120+ {0xffd01e1e , 0xffff7f7f },
104121 }
105122 );
106123// size_t c = 0;
107124 for (PackedBinaryMatrix& matrix : matrices){
108125 session->set_source (matrix);
109- auto iter = session->make_iterator (10 );
126+ auto iter = session->make_iterator (size_threshold );
110127 WaterfillObject object;
111128 while (iter->find_next (object, false )){
112129 double aspect_ratio = object.aspect_ratio ();
@@ -123,13 +140,16 @@ bool LetsGoKillDetector::detect(const ImageViewRGB32& screen){
123140 std::vector<PackedBinaryMatrix> matrices = compress_rgb32_to_binary_range (
124141 region,
125142 {
143+ {0xffb0b0b0 , 0xffffffff },
126144 {0xffc0c0c0 , 0xffffffff },
145+ {0xffd0d0d0 , 0xffffffff },
146+ {0xffe0e0e0 , 0xffffffff },
127147 }
128148 );
129149// size_t c = 0;
130150 for (PackedBinaryMatrix& matrix : matrices){
131151 session->set_source (matrix);
132- auto iter = session->make_iterator (10 );
152+ auto iter = session->make_iterator (size_threshold );
133153 WaterfillObject object;
134154 while (iter->find_next (object, false )){
135155 double aspect_ratio = object.aspect_ratio ();
0 commit comments