Page 270 - MDP2020-1
P. 270

|    인천전자마이스터고등학교  ·············································································································
            264

                    #  insert  to  dict
                    contours_dict.append({
                            'contour':  contour,
                            'x':  x,
                            'y':  y,
                            'w':  w,
                            'h':  h,
                            'cx':  x  +  (w  /  2),
                            'cy':  y  +  (h  /  2)
                    })
            plt.figure(figsize=(12,  10))
            plt.imshow(temp_result,  cmap='gray')
            MIN_AREA  =  80
            MIN_WIDTH,  MIN_HEIGHT  =  2,  8
            MIN_RATIO,  MAX_RATIO  =  0.25,  1.0
            possible_contours  =  []
            cnt  =  0
            for  d  in  contours_dict:
                    area  =  d['w']  *  d['h']
                    ratio  =  d['w']  /  d['h']

                    if  area  >  MIN_AREA  \
                    and  d['w']  >  MIN_WIDTH  and  d['h']  >  MIN_HEIGHT  \
                    and  MIN_RATIO  <  ratio  <  MAX_RATIO:
                            d['idx']  =  cnt
                            cnt  +=  1
                            possible_contours.append(d)

            #  visualize  possible  contours
            temp_result  =  np.zeros((height,  width,  channel),  dtype=np.uint8)
            for  d  in  possible_contours:
            #          cv2.drawContours(temp_result,  d['contour'],  -1,  (255,  255,  255))
                    cv2.rectangle(temp_result,  pt1=(d['x'],  d['y']),  pt2=(d['x']+d['w'],  d['y']+d['h']),  color=(255,
            255,  255),  thickness=2)
            plt.figure(figsize=(12,  10))
            plt.imshow(temp_result,  cmap='gray')
            MAX_DIAG_MULTIPLYER  =  5  #  5
            MAX_ANGLE_DIFF  =  12.0  #  12.0
            MAX_AREA_DIFF  =  0.5  #  0.5
            MAX_WIDTH_DIFF  =  0.8
            MAX_HEIGHT_DIFF  =  0.2
            MIN_N_MATCHED  =  3  #  3
            def  find_chars(contour_list):
                    matched_result_idx  =  []
   265   266   267   268   269   270   271   272   273   274   275