44#include < stdio.h>
55#include < stdlib.h>
66#include < sstream>
7+ #include " sort_board_as_per_location.h"
78using namespace std ;
89using namespace cv ;
910
@@ -105,13 +106,19 @@ RotatedRect *label(VideoCapture cam) {
105106 // Start main loop:
106107 while (key!=27 ) {
107108 // Read and threshold image. Clean up.
109+
108110 cam.read (src);
109111 cvtColor (src,hsv, CV_BGR2HSV);
110- inRange (hsv, Scalar (0 , sL , vL), Scalar (179 , sH ,vH),holded);
111- inRange (hsv, Scalar (0 , sL1 , vL1), Scalar (179 , sH1 ,vH1),holded1);
112+ inRange (hsv, Scalar (0 , sL , vL), Scalar (60 , sH ,vH),holded);
113+ // threshold(holded, holded, 15, 255, THRESH_BINARY);
114+ inRange (hsv, Scalar (70 , sL1 , vL1), Scalar (179 , sH1 ,vH1),holded1);
115+ // threshold(holded1, holded1, 12, 255, THRESH_BINARY);
112116 medianBlur (holded, holded, 15 );
113117 medianBlur (holded1, holded1, 15 );
114-
118+ // imshow("holded_for_white", holded);
119+ // imshow("holded_for_black", holded1);
120+ waitKey (33 );
121+ // destroyAllWindows();
115122 // Fiond contours for black and white , find moments
116123 vector<vector<Point> > contours;
117124 vector<Vec4i> hierarchy;
@@ -151,6 +158,7 @@ RotatedRect *label(VideoCapture cam) {
151158 if (flag==1 ) continue ;
152159 if (checkContour (contours[i])==false ) continue ;
153160 RotatedRect r1 = minAreaRect ( Mat (contours[i]));
161+ waitKey (1 );
154162 /* start drawing functions */
155163 Point2f r[4 ]; r1.points (r);
156164 for ( int j = 0 ; j < 4 ; j++ ){
@@ -163,6 +171,7 @@ RotatedRect *label(VideoCapture cam) {
163171 s = out.str ();
164172 putText (drawing, s, mc[i], 1 ,1 , Scalar (255 ,255 ,255 ));
165173 rects[k] = r1;
174+
166175 /* end drawing functions */
167176 k++;
168177 if (k==32 ) { // k=32 implies we are finished with the chess blocks
@@ -171,15 +180,19 @@ RotatedRect *label(VideoCapture cam) {
171180 }
172181
173182 }
174-
183+ sort_array_y (rects, 32 );
184+ for (int m=0 ; m!=8 ; m++) {
185+ sort_array_x (rects+(4 *m), 4 );
186+ }
187+ print_array (rects, 32 );
175188 k=0 ; // reset white/black counter for black
176189 for ( int i = 0 ; i< contours1.size (); i++ )
177190 {
178191
179192 if (flag2==1 ) continue ;
180193 if (checkContour (contours1[i])==false ) continue ;
181194 RotatedRect r1 = minAreaRect ( Mat (contours1[i]));
182-
195+ waitKey ( 1 );
183196 /* start drawing functions */
184197 Point2f r[4 ]; r1.points (r);
185198 for ( int j = 0 ; j < 4 ; j++ ){
@@ -199,6 +212,11 @@ RotatedRect *label(VideoCapture cam) {
199212 drawing.copyTo (final2);
200213 }
201214 }
215+ sort_array_y (rects+32 , 32 );
216+ for (int m=0 ; m!=8 ; m++) {
217+ sort_array_x (32 +rects+(4 *m), 4 );
218+ }
219+ print_array (rects+32 , 32 );
202220
203221 imshow (" COM" , src+drawing); // Display current drawn imgs
204222 key=waitKey (30 );
0 commit comments