想用halcon的ocr识别点打印的日期,不明白为什么识别出来不对

关注让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!首先,要确保输入的图像质量较高,字体清晰,且图片没有变形或畸变。另外,还需要确保OCR模型已经训练好,能够准确识别日期文本。如果以上条件都满足,但识别结果依然不正确,可能是由于OCR模型对日期的格式不够灵活,或者日期显示的格式不符合OCR模型的预期。 以下是用halcon实现OCR识别的示例代码:
opencv::setenv("HALCONIMAGES", "D:/softwares/mvIMPACT/test/assets/images/");
try {
//
// The development license of HALCON has been moved to 'yourLicense.hdev'.
// PLEASE DON'T FORGET TO COPY THIS FILE TO THE DIRECTORY CONTAINING THE EXECUTABLE!
cout << "<html><body>\n";
//dev_open_window_fit_image(Image,0,0,1280,1024,"image","");
//dev_set_window_attr("background_color","black");
//dev_set_window_attr("title","image | {zoom}");
//timing_on();
open_framegrabber("/media/sda1/All_images_par_gpuse/created_movie/ChessBoard_perspective_zoomed.png",2000,1500,0,0,0,0,"default","default","default","default","default","true","default","default","default","default",&hv_AcqHandle);
//
set_image_type(hv_AcqHandle, "byte");
grab_image(&Image, hv_AcqHandle);
get_image_size (Image, &Width, &Height);
window_width = Width/10;
window_height = Height/10;
cout << "<p>image width:"<< Width<<"</p><p>image height:"<< Height <<"</p>";
open_window(0,0,Width,Height,0,"visible","zoom","fit_window",0);
set_line_width(3);
set_color("green");
//String imgName = CHelper::toStr<T>(imgNum);
//dev_set_window_attr_string(winID, "title", imgName + "label-");
//H71_DISPLAY_HWND(hwnd, "test1.bmp", 0, 0, Width, Height, winID, "");
set_rgb(Image,Width,Height,Plane,&WindowID);
//unlock the frame grabber
//set_thread_attr_string(ThreadHandle, "number", "16");
dev_set_framegrabber_param( hv_AcqHandle, "use_thread", "false" );
//setTextImageFontStyle("Courier-Bold-30");
//doubleFontSize();
//setFont(HW_TEXT_OVERLAY, "");
//getRow(Text,CAM_TEXT,&num);
//set_tposition((HTuple(5)), (HTuple(5)));
Font.setExtension("heavy");
Font.setSize( "18" );
set_fontcombi(elliptical, Font);
set_mshape( "true" );
//Aqui va el codigo <>
// Segment Image
createbarcodemodel(0,"auto","auto",&CodeHandle1);
find_bar_code_model(Image,&DecodedDataStrings1,CodeHandle1,"auto","auto", &BarCodeRegion1);
clear_bar_code_model(CodeHandle1);
//这个例子处理的只是一行
cout<<"<p>Bar: "<<DecodedDataStrings1.Schar()<< "</p>"<<flush;
halconToHalconStream(BarCodeRegion1,&EdgeAmp);
set_colored(1);
//dev_display(EdgeAmp);
set_rgb(EdgeAmp,Width,Height,Plane,&WinIDWindowID);
errRead();
//
RGB2gray(Image,&GrayImage);
find_shape_models(GrayImage,ModelID2,(HTuple(20).TupleRad()),(HTuple(30).TupleRad()),0.5,1,0.5,&Row,&Column,&Angle,&Scale,&Score);
allocate_dl_regions(&DLRegion, 1);
for (i=1; i<=1; i+=1)
{
create_dl_region_xld(ModelID2,Row,Column,0,Scale,Scale,0,2*HT_PI,&HTuple(20).TupleRad(),&TopLeftX,&TopLeftY,&AngleHandle);
append_dl_region(DLRegion, AngleHandle);
}
//display_region(DLRegion,WinIDWindowID);
dev_update_off();
set_display_font(WinIDWindowID,16,"mono","true","false","");
message("right mouse click");
// skip some frames
Message(nullptr,0,0,0,"RMB click to continue","Larger Window: Q","exit: escape","",2); // 2 means , the window will be active
gen_rectangle1(&Region,0,0,1500,1500);
//reduce_domain(Image,Region,&ReducedImage);
reduce_domain(GrayImage,Region,&ReducedImage);
show_object(ReducedImage,WinIDWindowID);
errRead();
dev_update_on();
// reduce_domain (Image, Region, &ReducedImage);
//dev_display(ReducedImage);
//while (wait_key(0, " ~" )!=27)
//dev_close_window();
//dev_close_window();
dev_close_window();
close_window(WinIDWindowID);
close_window(WindowID);
//setVisible(H71_DISPLAY_HWND__);
//setIconify(1, WindowID);
//set_part(0,0,1500,1500);
//setVisible(0, WindowID);
//dev_close_window ();
// setMessage ( 'RUN: stop grabbing the next image');
//MessageBox(GetActiveWindow(),"RUN: stop grabbing the next image", "Info", 1);
stop_framegrabber(hv_AcqHandle);
// putting the iconify gives a panic
output_dev_win();
//
// Close the opened file names
CloseFramegrabber(hv_AcqHandle);
} catch (HException &except){
hv_Exception = except;
WriteError(hv_Exception,hv_WindowID);
}
cout << "\n</html></body>";
//} catch (HException(except) {
//printf("An exception occured %s\n",new string(except.message()));
// ht!= null => OCIO.getGlobalImage();
//}
请尝试将以上代码与您的实际情况结合起来,调整参数和模型,以便正确识别日期文本。希望能解决您遇到的问题。