Halcon以当前系统时间命名图片并保存在指定文件夹

博客介绍了使用Halcon以当前系统时间命名图片,并将其保存在指定文件夹的内容。作者表示网上类似参考文章少,且部分需权限,随后给出相关代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Halcon以当前系统时间命名图片并保存在指定文件夹

我在网上搜索时,发现很少类似文章参考,仅有的几篇还要各种权限,我这暴脾气当然不能忍了。话不多说,一言不合上代码:

read_image (Image, 'fabrik')
dev_get_window (WindowHandle)
if(-1!=WindowHandle)
    set_display_font (WindowHandle, 16, 'sans', 'true', 'false')
    disp_message (WindowHandle, '请确保要定义的路径不存在于电脑中!', 'window', 12, 12, 'red', 'false')
endif
stop ()
*定义FilePath字符串路径(文件夹长度不要超过10),来确定要保存图片路径的上一级文件夹
*警告:定义的文件夹字符串必须是电脑中不存在的,否则抛异常
*注意:不能只定义盘符来作为路径,例如:'E:/' 是不允许的路径
FilePath:='E:/图片测试目录/TestPic/NG/fgrd/df/gr/34/gr/45/65'
*根据路径创建根文件夹
file_exists (FilePath, IsExist)
try
    if(IsExist)
    else
        tuple_strstr (FilePath, '/', Position)
        if(Position==0)
        else
            tuple_split (FilePath, '/', Substrings)
            tuple_length (Substrings, Length)
            switch (Length)
            case 1:
                break
            case 2:
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'
                make_dir (Dirs)
                break
            case 3:
                Dirs2:=Substrings[0]+'/'+Substrings[1]+'/'
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'
                make_dir (Dirs2)
                make_dir (Dirs)
                break
            case 4:
                Dirs2:=Substrings[0]+'/'+Substrings[1]+'/'
                Dirs3:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'
                make_dir (Dirs2)
                make_dir (Dirs3)
                make_dir (Dirs)
                break
            case 5:
                Dirs2:=Substrings[0]+'/'+Substrings[1]+'/'
                Dirs3:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'
                Dirs4:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                       +Substrings[4]+'/'
                make_dir (Dirs2)
                make_dir (Dirs3)
                make_dir (Dirs4)
                make_dir (Dirs)
                break
            case 6:
                Dirs2:=Substrings[0]+'/'+Substrings[1]+'/'
                Dirs3:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'
                Dirs4:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'
                Dirs5:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                       +Substrings[4]+'/'+Substrings[5]+'/'
                make_dir (Dirs2)
                make_dir (Dirs3)
                make_dir (Dirs4)
                make_dir (Dirs5)
                make_dir (Dirs)
                break
            case 7:
                Dirs2:=Substrings[0]+'/'+Substrings[1]+'/'
                Dirs3:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'
                Dirs4:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'
                Dirs5:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'
                Dirs6:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                       +Substrings[4]+'/'+Substrings[5]+'/'+Substrings[6]+'/'
                make_dir (Dirs2)
                make_dir (Dirs3)
                make_dir (Dirs4)
                make_dir (Dirs5)
                make_dir (Dirs6)
                make_dir (Dirs)
                break
            case 8:
                Dirs2:=Substrings[0]+'/'+Substrings[1]+'/'
                Dirs3:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'
                Dirs4:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'
                Dirs5:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'
                Dirs6:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'
                Dirs7:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                       +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'+'/'\
                       +Substrings[7]+'/'
                make_dir (Dirs2)
                make_dir (Dirs3)
                make_dir (Dirs4)
                make_dir (Dirs5)
                make_dir (Dirs6)
                make_dir (Dirs7)
                make_dir (Dirs)
                break
            case 9:
                Dirs2:=Substrings[0]+'/'+Substrings[1]+'/'
                Dirs3:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'
                Dirs4:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'
                Dirs5:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'
                Dirs6:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'
                Dirs7:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'
                Dirs8:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'+'/'\
                        +Substrings[7]+'/'
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                       +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'+'/'\
                       +Substrings[7]+'/'+Substrings[8]+'/'
                make_dir (Dirs2)
                make_dir (Dirs3)
                make_dir (Dirs4)
                make_dir (Dirs5)
                make_dir (Dirs6)
                make_dir (Dirs7)
                make_dir (Dirs8)
                make_dir (Dirs)
                break
            case 10:
                Dirs2:=Substrings[0]+'/'+Substrings[1]+'/'
                Dirs3:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'
                Dirs4:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'
                Dirs5:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'
                Dirs6:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'
                Dirs7:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'
                Dirs8:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'+'/'\
                        +Substrings[7]+'/'
                Dirs9:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                        +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'+'/'\
                        +Substrings[7]+'/'+Substrings[8]+'/'
                Dirs:=Substrings[0]+'/'+Substrings[1]+'/'+Substrings[2]+'/'+Substrings[3]+'/'\
                       +Substrings[4]+'/'+Substrings[5]+'/'+'/'+Substrings[6]+'/'+'/'\
                       +Substrings[7]+'/'+Substrings[8]+'/'+Substrings[9]+'/'
                make_dir (Dirs2)
                make_dir (Dirs3)
                make_dir (Dirs4)
                make_dir (Dirs5)
                make_dir (Dirs6)
                make_dir (Dirs7)
                make_dir (Dirs8)
                make_dir (Dirs9)
                make_dir (Dirs)
                break
            endswitch
        endif
    endif
catch (Exception)
    if(-1!=WindowHandle)
        set_display_font (WindowHandle, 16, 'sans', 'true', 'false')
        disp_message (WindowHandle, '确保定义的路径不存在于电脑中!', 'window', 12, 12, 'red', 'false')
    endif
endtry
*以系统月日创建一个文件夹,并以系统时间为名称保存图片
get_system_time (MSecond, Second, Minute, Hour, Day, YDay, Month, Year)
Path:=Dirs+Month$'d'+'-'+Day$'d'+'/'
file_exists (Path, DirExist)
if(DirExist)
else
    make_dir (Path)
endif
Filename:=Path+Hour$'d'+'时'+Minute$'d'+'分'+Second$'d'+'秒'+'.bmp'
write_image (Image, 'bmp', 0, Filename)
Halcon机器视觉软件中,读取文件夹内的Data Matrix二维码保存通常涉及以下几个步骤: 1. **库加载**: 首先,你需要确保已经安装了Halcon库,且在程序开始时导入`hvlib.h`和`imaging.h`头文件。 ```c++ #include <hvlib.h> #include <imaging.h> ``` 2. **图像读取**: 使用`hvFileGetImage()`函数从指定文件夹路径读取所有图片,假设`folder_path`存储了文件夹路径。 ```c++ hvObject img_list = hvFileGetImage(folder_path, "*.png", "*.jpg"); ``` 3. **遍历图片**: 对于读取到的图片列表,你可以遍历每个图像,检测其中的数据矩阵二维码。 ```c++ for (int i = 0; i < hvObjectGetNumElements(img_list); ++i) { hvImage img = hvObjectGetElement(img_list, i); // 二维码识别部分... } ``` 4. **二维码识别**: 使用Halcon提供的`findCode`函数或`hcode_decode`函数对每个图像中的二维码进行搜索和解码。 ```c++ hvCode code; if (hvFindCode(img, &code, HT_CODE_2D_DATA_MATRIX)) { // 找到二维码 hvRectangle rect = code.getCodeRegion(); // 获取二维码区域 char* decoded_data = hcode_decode(code.getCodeData(), code.getCodeLength()); // 解码数据 // 保存解码后的数据和图片... } ``` 5. **结果处理和保存**: 将解码后的数据保存到文件或者数据库,同时也可以将包含二维码的原图保存。 ```c++ // 保存解码数据 saveDecodedData(decoded_data, "decoded_data.txt"); // 保存原图 hvWriteImage(img, "qr_code_" + std::to_string(i) + ".jpg"); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值