|
17 | 17 |
|
18 | 18 | pathname = os.path.dirname(sys.argv[0]) |
19 | 19 |
|
20 | | - |
21 | 20 | img = cv.imread(str(sys.argv[1])) |
22 | 21 | # for visualization |
23 | 22 | vis = img.copy() |
24 | 23 |
|
25 | 24 |
|
26 | 25 | # Extract channels to be processed individually |
27 | | -channels = cv.text.computeNMChannels(img) |
| 26 | +channels = list(cv.text.computeNMChannels(img)) |
28 | 27 | # Append negative channels to detect ER- (bright regions over dark background) |
29 | 28 | cn = len(channels)-1 |
30 | 29 | for c in range(0,cn): |
31 | | - channels.append((255-channels[c])) |
| 30 | + channels.append(255-channels[c]) |
32 | 31 |
|
33 | 32 | # Apply the default cascade classifier to each independent channel (could be done in parallel) |
| 33 | + |
| 34 | +erc1 = cv.text.loadClassifierNM1('trained_classifierNM1.xml') |
| 35 | +er1 = cv.text.createERFilterNM1(erc1,16,0.00015,0.13,0.2,True,0.1) |
| 36 | + |
| 37 | +erc2 = cv.text.loadClassifierNM2('trained_classifierNM2.xml') |
| 38 | +er2 = cv.text.createERFilterNM2(erc2,0.5) |
| 39 | + |
34 | 40 | print("Extracting Class Specific Extremal Regions from "+str(len(channels))+" channels ...") |
35 | 41 | print(" (...) this may take a while (...)") |
36 | 42 | for channel in channels: |
37 | 43 |
|
38 | | - erc1 = cv.text.loadClassifierNM1(pathname+'/trained_classifierNM1.xml') |
39 | | - er1 = cv.text.createERFilterNM1(erc1,16,0.00015,0.13,0.2,True,0.1) |
40 | | - |
41 | | - erc2 = cv.text.loadClassifierNM2(pathname+'/trained_classifierNM2.xml') |
42 | | - er2 = cv.text.createERFilterNM2(erc2,0.5) |
43 | | - |
44 | 44 | regions = cv.text.detectRegions(channel,er1,er2) |
45 | 45 |
|
46 | 46 | rects = cv.text.erGrouping(img,channel,[r.tolist() for r in regions]) |
47 | 47 | #rects = cv.text.erGrouping(img,channel,[x.tolist() for x in regions], cv.text.ERGROUPING_ORIENTATION_ANY,'../../GSoC2014/opencv_contrib/modules/text/samples/trained_classifier_erGrouping.xml',0.5) |
48 | 48 |
|
49 | 49 | #Visualization |
50 | | - for r in range(0,np.shape(rects)[0]): |
51 | | - rect = rects[r] |
| 50 | + for rect in rects: |
52 | 51 | cv.rectangle(vis, (rect[0],rect[1]), (rect[0]+rect[2],rect[1]+rect[3]), (0, 0, 0), 2) |
53 | 52 | cv.rectangle(vis, (rect[0],rect[1]), (rect[0]+rect[2],rect[1]+rect[3]), (255, 255, 255), 1) |
54 | 53 |
|
55 | | - |
56 | 54 | #Visualization |
57 | 55 | cv.imshow("Text detection result", vis) |
58 | 56 | cv.waitKey(0) |
0 commit comments