想用halcon的ocr识别点打印的日期,不明白为什么识别出来不对
4条回答 默认 最新
关注
让【道友老李】来帮你解答,本回答参考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(); //}
请尝试将以上代码与您的实际情况结合起来,调整参数和模型,以便正确识别日期文本。希望能解决您遇到的问题。
解决 无用评论 打赏 举报