• Halcon控制台应用程序(可遍历多图)


     弹出的窗体与OpenCV不同,没有最大、最小、关闭。我们可以设置键盘事件退出,尤其在遍历多个图查看每个的效果时很方便。

    注意opencv如果使用system("pause");不展示图,必须用waitKey();

    VS新建控制台应用程序

    #include<halconcppHalconCpp.h>
    using namespace HalconCpp;
    
    void main()
    {
        HObject ho_Image;
        HTuple hv_WindowID;
        ReadImage(&ho_Image, "D:/sunflower.png");
        OpenWindow(0, 0, -1, -1, 0, "", "", &hv_WindowID);//-1,-1窗口大小适应图片,若设为200,200时,窗体大小固定
        DispObj(ho_Image, hv_WindowID);
        system("pause");
    }

    多图遍历展示,鼠标先点击下cmd窗口,再按Esc键

    #include<conio.h> //键盘事件
    #include<halconcppHalconCpp.h>
    using namespace HalconCpp;
    
    void main()
    {
        HObject ho_Image, ho_GrayImage, ho_Regions;
        HTuple hv_WindowID;
    
        HTuple  hv_ImageFiles, hv_Index;
        //从路径读图
        ListFiles("D:/myPic", ((HTuple("files").Append("follow_links")).Append("recursive")), &hv_ImageFiles);
        TupleRegexpSelect(hv_ImageFiles, (HTuple("\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$").Append("ignore_case")), &hv_ImageFiles);
        {
            HTuple end_val2 = (hv_ImageFiles.TupleLength()) - 1;
            HTuple step_val2 = 1;
            for (hv_Index = 0; hv_Index.Continue(end_val2, step_val2); hv_Index += step_val2)
            {
                //图像处理程序
                ReadImage(&ho_Image, HTuple(hv_ImageFiles[hv_Index]));
                Rgb1ToGray(ho_Image, &ho_GrayImage);
                Threshold(ho_GrayImage, &ho_Regions, 45, 55);
                SetWindowAttr("background_color", "black");//窗体背景色为黑
                OpenWindow(0, 0, -1, -1, 0, "", "", &hv_WindowID);//-1,-1窗口大小适应图片
                DispObj(ho_Image, hv_WindowID);
                SetColor(hv_WindowID, "red");//设置二值图目标的颜色(在显示之前)
                DispObj(ho_Regions, hv_WindowID);
                //Esc键切换下一张图
                while (true)
                {
                    if (_getch() == 27){
                        CloseWindow(hv_WindowID);
                        break;//跳出while循环体
                    }
                }
            }
        }
    }

     对应的halcon程序(无键盘事件)

    list_files ('D:/myPic', ['files','follow_links','recursive'], ImageFiles)
    tuple_regexp_select (ImageFiles, ['\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
    for Index := 0 to |ImageFiles| - 1 by 1
        read_image (Image, ImageFiles[Index])
        * Image Acquisition 01: Do something
        rgb1_to_gray (Image, GrayImage)
        threshold (GrayImage, Regions, 45, 55)
        dev_open_window (0, 0, -1, -1, 'black', WindowHandle1)
        dev_display (GrayImage)
        dev_set_color ('red')
        dev_display (Regions)
        dev_close_window ()
    endfor
  • 相关阅读:
    mysql的触发器
    数据库面试题
    数据库面试(1)
    eclipse里maven项目An error occurred while filtering resources解决办法
    Missing artifact com.github.pagehelper:pagehelper:jar:3.4.2-fix的解决方法
    淘淘商城学习
    spring Security简介
    ElasticSearch学习
    在Visual Studio中使用FFTW库
    FFTW程序Demo
  • 原文地址:https://www.cnblogs.com/xixixing/p/12739368.html
Copyright © 2020-2023  润新知