4
4
5
5
using namespace cv ;
6
6
7
-
8
7
#define V_PROJECT 1
9
8
#define H_PROJECT 2
10
9
@@ -16,8 +15,7 @@ typedef struct
16
15
}char_range_t ;
17
16
18
17
19
-
20
- // 获取文本的投影用于分割字符(垂直,水平)
18
+ // 获取文本的投影用于分割字符(垂直,水平)
21
19
int GetTextProjection (Mat &src, vector<int >& pos, int mode)
22
20
{
23
21
if (mode == V_PROJECT)
@@ -48,14 +46,10 @@ int GetTextProjection(Mat &src, vector<int>& pos, int mode)
48
46
}
49
47
}
50
48
}
51
-
52
-
53
-
54
-
55
49
return 0 ;
56
50
}
57
51
58
- // 获取每个分割字符的范围,min_thresh:波峰的最小幅度,min_range:两个波峰的最小间隔
52
+ // 获取每个分割字符的范围,min_thresh:波峰的最小幅度,min_range:两个波峰的最小间隔
59
53
int GetPeekRange (vector<int > &vertical_pos, vector<char_range_t > &peek_range, int min_thresh = 2 , int min_range = 10 )
60
54
{
61
55
int begin = 0 ;
@@ -93,7 +87,6 @@ int GetPeekRange(vector<int> &vertical_pos, vector<char_range_t> &peek_range, in
93
87
// printf("raise error!\n");
94
88
}
95
89
}
96
-
97
90
return 0 ;
98
91
}
99
92
@@ -105,7 +98,7 @@ inline void save_cut(const Mat& img, int id)
105
98
imwrite (name, img);
106
99
}
107
100
108
- // 切割字符
101
+ // 切割字符
109
102
int CutChar (Mat &img, const vector<char_range_t >& v_peek_range, const vector<char_range_t >& h_peek_range, vector<Mat>& chars_set)
110
103
{
111
104
static int count = 0 ;
@@ -134,7 +127,6 @@ Mat cut_one_line(const Mat& src,int begin,int end)
134
127
return line;
135
128
}
136
129
137
-
138
130
vector<Mat> CutSingleChar (Mat& img)
139
131
{
140
132
// resize(img, img, Size(), 1.5, 1.5, INTER_LANCZOS4);
@@ -145,7 +137,7 @@ vector<Mat> CutSingleChar(Mat& img)
145
137
GetTextProjection (img, horizion_pos, H_PROJECT);
146
138
GetPeekRange (horizion_pos, h_peek_range, 10 , 10 );
147
139
148
- /* 将每一文本行切割*/
140
+ /* 将每一文本行切割*/
149
141
vector<Mat> lines_set;
150
142
for (int i = 0 ; i < h_peek_range.size (); i++)
151
143
{
@@ -164,22 +156,9 @@ vector<Mat> CutSingleChar(Mat& img)
164
156
GetPeekRange (vertical_pos, v_peek_range);
165
157
CutChar (line, v_peek_range, h_peek_range, chars_set);
166
158
}
167
-
168
-
169
159
return chars_set;
170
-
171
-
172
160
}
173
161
174
-
175
-
176
-
177
-
178
-
179
-
180
-
181
-
182
-
183
162
int main ()
184
163
{
185
164
Mat img = imread (" 12.png" , 0 );
@@ -188,9 +167,9 @@ int main()
188
167
189
168
for (int i = 0 ; i < chars_set.size (); i++)
190
169
{
191
- /* 字符识别*/
170
+ /* 字符识别*/
192
171
}
193
172
194
173
waitKey ();
195
174
return 0 ;
196
- }
175
+ }
0 commit comments