经通过,对于0-9这几个数字,统计数据如下:
显然,这些数字的宽度极差较大,高度较为统一,故在处理是待识别图片应处理在15左右。
观察这些图片,发现灰度图和颜色非常均匀,而用不同的笔写的字显然无法达到这种效果,因此要识别不同的笔写的数字,显然需要人眼进行阈值处理然后进行二值化。故今天思考一天的求字的平均重量算法是没有意义的,无法实现自动处理。
虽然不用了,但记录下来也是有意义的。
//如果为0,表示黑白2色,非0表示灰度图
static int getWeight(Mat img,int flag=0)
{
int res = 0;
for (int row = 0; row < img.Rows; row++)
{
for (int cols = 0; cols < img.Cols; cols++)
{
var pixel = img.Get<byte>(row, cols);
if (pixel != 0)
{
if (flag == 0) res++;
else res += pixel;
}
}
}
return res;
}
重要的调试经验,调试,查看mat类型,如下:
(1)mat类型
{Mat [ 20*20*CV_8UC1, IsContinuous=True, IsSubmatrix=False, Ptr=0xf5acd0, Data=0xf1c6c0 ]}
(2)内存类型:
做减法:f1c850-f1c6c0=0x190=400
可印证内部数值为byte类型。