opencv 学习之 液晶数字识别

该博客介绍了通过OpenCV进行液晶数字识别的方法,采用纵向和横向扫描算法,实验结果显示良好。作者提到算法未处理小数点,但可以通过Y方向腐蚀检测。同时,建议使用SVM、K近邻或神经网络等更高级的算法。博客提供了基于OpenCV1的C语言实验代码,包括二值化、形态学处理和字符排序。作者指出应学习更新的OpenCV2,以利用其更多功能和C++的便利性。
摘要由CSDN通过智能技术生成

算法采用纵向及横向扫描方式,对清晰图片进行了实验,效果较好。

算法未检测小数点,感兴趣的同学可以Y方向腐蚀检测小数点,按照X坐标排序即可。

当然,数字及字符识别,SVM、K近邻、神经网络等等这些才是正道,平常用得比较多的算法。

源图如下:


代码如下:

//DATE : 20160729
//CODE FOR LIDAN NUMBER RECG

#include "highgui.h"
#include "cv.h"

using namespace std;
using namespace cv;

void detect(IplImage * img, char * strnum, CvRect rc);

int list[10][2] = {0};	//1列坐标,2列字符数值
int l = 0;	//字符个数

int main()
{
	IplImage * src_img = cvLoadImage("plate1.jpg");
	if(!src_img)
	{
		printf("src_img could not be load\n");
		return -1;
	}

	//cvShowImage("src", src_img);	//src img

	IplImage * gray_img = cvCreateImage(cvGetSize(src_img), src_img->depth, 1);
	cvCvtColor(src_img, gray_img, CV_BGR2GRAY);
	cvShowImage("gray", gray_img);	//gray img

	IplImage * adp_img = cvCreateImage(cvGetSize(src_img), src_img->depth, 1);
    int threshold_type = CV_THRESH_BINARY_INV;  
    int adaptive_method = CV_ADAPTIVE_THRESH_GAUSSIAN_C;  //CV_ADAPTIVE_THRESH_MEAN_C  
    int block_size = 7;  
    double offset = 5; 
    //cvAdaptiveThreshold(gray_img, adp_img, 255, adaptive_method, threshold_type, block_size, offset);
	cvThreshold(gray_img, adp_img, 80, 255.0, CV_THRESH_BINARY); 
	cvShowImage("adp", adp_img);

	IplImage * xtx_img = cvCreateImage(cvGetSize(adp_img), adp_img->depth, adp
  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值