银行卡号码提取

今天闲着无聊,做了一下银行卡卡号的roi获取。

记录下实验步骤:

  1. 图片灰度化
cvtColor(images, gray, COLOR_BGR2GRAY);

  1. 采用OSTU方式二值化
threshold(gray,binary,0,255,THRESH_BINARY_INV|THRESH_OTSU);

  1. 先对二值化图片开操作,然后膨胀操作
	Mat kernel = getStructuringElement(MORPH_RECT,Size(10,2),Point(-1,-1));
	Mat erode_dst;
	morphologyEx(binary,erode_dst,MORPH_OPEN,kernel,Point(-1,-1),2);
	erode(erode_dst, erode_dst, kernel, Point(-1, -1), 4);

4.发现轮廓

	vector<vector<Point>> controus;
	findContours(erode_dst,controus,RETR_LIST,CHAIN_APPROX_SIMPLE,Point());

注意这里选择参数RETR_LIST 或者RETR_TREE,不要用RETR_EXTERNAL

5.根据长宽比,得到具体ROI

	for (size_t t = 0; t < rets.size(); t++) {
		if (rets[t].width > rets[t].height * 10) {
			rectangle(images, rets[t], Scalar(0, 0, 255), 2, 8);
			roi = images(rets[t]).clone();
		}
	}

posted @ 2020-04-16 17:13  cyssmile  阅读(792)  评论(0编辑  收藏  举报