資源簡介
用opencv對條碼進行識別
代碼片段和文件信息
#include??
#include
#include?“BarCodeRec.h“
#include?“cv.h“
#include?“highgui.h“
#include?“string.h“
#include?
#include?
#include?
using?namespace?cv;?
using?namespace?std;
using?namespace?barcode;
char*?Barcode(char*?ImageName);//總的封裝接口
double?otsu(const?IplImage?*src_image);?//大津法求閾值
double?Kittler(?IplImage?*imge?);
void?OnPicSb(IplImage?*imge);
BOOL?PreProcess(IplImage?*imge);
BOOL?Recognize();
int?JudgNum(int?w1?int?w2?int?w3?int?w4?double?mx);
/////////////////////////////////////////////////////////////////////////////
char*?Barcode(char*?ImageName)
{
//?TODO:?Add?your?command?handler?code?here
IplImage*?pImg;?//聲明IplImage指針
//?Matlab風格的cvLoadImage?函數的另一種調用
IplImage?*img?=?cvLoadImage(ImageName1);
if(!img)//載入失敗
{
printf(“Can?not?load?image?%s?/n“ImageName);
return?NULL;
}
if(!img->imageData)//載入的圖像數據是否正確
return?NULL;
/*IplImage?*gray?=?NULL;
IplImage?*binary?=?NULL;
gray?=?cvCreateImage(cvGetSize(img)?IPL_DEPTH_8U?1);//轉化成灰度圖
cvCvtColor(img?gray?CV_BGR2GRAY);
binary?=?cvCreateImage(cvGetSize(gray)?IPL_DEPTH_8U?1);//創建二值圖
*/
cvNamedWindow(“image“CV_WINDOW_AUTOSIZE?);//創建窗口,窗口名字為image
cvShowImage(“image“img);//在剛創建的image窗口中載入圖像
//創建一個與img相同大小的圖像img1
IplImage?*img1?=?cvCreateImage(cvGetSize(img)IPL_DEPTH_8U1);
//色彩空間轉換,將源彩色圖像img轉化成目標灰色圖像imag1
cvCvtColor(imgimg1CV_BGR2GRAY);?//灰度化
//二值化
IplImage?*img_thre?=?cvCreateImage(cvGetSize(img1)IPL_DEPTH_8U1);
// IplImage?*img3?=?cvCreateImage(cvGetSize(img1)IPL_DEPTH_8U1);
/*void?cvThreshold(?const?CvArr*?src?CvArr*?dst?double?threshold
???????double?max_value?int?threshold_type?);
??void?cvAdaptiveThreshold(?dst?dst?255?CV_ADAPTIVE_THRESH_MEAN_C
???????CV_THRESH_BINARY?9?-10);*/
cvThreshold(?img1?img_thre?otsu(img1)255?CV_THRESH_BINARY);
// cvThreshold(?img1?img_thre?Kittler(img1)255?CV_THRESH_BINARY);
IplImage*?out_smooth?=?cvCreateImage(cvGetSize(img_thre)??
IPL_DEPTH_8Uimg_thre->nChannels);???
????cvSmooth(img_threout_smoothCV_MEDIAN3img_thre->nChannels);
//識別
// OnPicSb(out_smooth);
PreProcess(out_smooth);
Recognize();
cvNamedWindow(“ThreImage“CV_WINDOW_AUTOSIZE);//創建窗口,窗口名字GrayImage
cvShowImage(“ThreImage“img_thre);//載入轉化后的圖像
cvNamedWindow(“SmoothImage“CV_WINDOW_AUTOSIZE);//創建窗口,窗口名字GrayImage
cvShowImage(“SmoothImage“out_smooth);//載入轉化后的圖像
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&img1);
cvReleaseImage(&img_thre);
cvReleaseImage(&out_smooth);
cvDestroyAllWindows(?);
return?0;
}
double?otsu(const?IplImage?*src_image)?//大津法求閾值
{
double?sum?=?0.0;
double?w0?=?0.0;
double?w1?=?0.0;
double?u0_temp?=?0.0;
double?u1_temp?=?0.0;
double?u0?=?0.0;
double?u1?=?0.0;
double?delta_temp?=?0.0;
double?delta_max?=?0.0;
//src_image灰度級
int?pixel_count[256]={0};
float?pixel_pro[256]={0};
double?threshold?=?0.0;
uchar*?data?=?(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????366054??2013-10-09?10:12??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\001.bmp
?????文件?????412086??2013-10-09?10:13??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\002.bmp
?????文件??????74754??2013-10-09?10:11??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\003.bmp
?????文件?????297386??2013-10-09?10:13??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\004.bmp
?????文件?????449334??2013-10-09?10:11??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\005.bmp
?????文件????1134390??2013-10-09?10:11??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\006.bmp
?????文件????2088594??2008-12-12?19:14??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\007.bmp
?????文件?????122427??2013-10-09?11:40??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\a.txt
?????文件??????????0??2013-10-09?12:47??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\b.txt
?????文件??????16149??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\BarCodeRec.cpp
?????文件???????1117??2013-10-09?10:57??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\BarCodeRec.h
?????文件???????1480??2013-10-08?10:41??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\barcode_module929.idc
?????文件???????4614??2016-03-23?17:07??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\barcode_module929.vcxproj
?????文件???????1071??2013-10-03?22:00??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\barcode_module929.vcxproj.filters
????.......???????143??2013-09-29?23:01??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\barcode_module929.vcxproj.user
?????文件?????210951??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\BarCodeRec.obj
?????文件???????1794??2013-10-10?09:12??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929.Build.CppClean.log
?????文件????????667??2013-10-10?09:12??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929.exe.em
?????文件????????732??2016-03-23?17:06??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929.exe.em
?????文件????????381??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929.exe.intermediate.manifest
?????文件?????????75??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929.lastbuildstate
?????文件???????3642??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929.log
?????文件????????713??2016-03-23?17:06??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929.vcxprojResolveAssemblyReference.cache
?????文件??????????0??2016-03-23?17:06??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929.write.1.tlog
?????文件????????224??2013-10-10?09:12??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\barcode_module929_manifest.rc
?????文件???????1686??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\cl.command.1.tlog
?????文件??????71930??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\CL.read.1.tlog
?????文件????????868??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\CL.write.1.tlog
?????文件??????????2??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\li
?????文件??????????2??2016-03-23?17:17??Opecv_一維碼識別barcode_module929\barcode_module929\barcode_module929\Debug\li
............此處省略70個文件信息
評論
共有 條評論