|
|

.版本 2
.支持库 edroptarget
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 源图像, 矩阵类
.程序集变量 灰度图像, 矩阵类
.程序集变量 最小值, 整数型
.程序集变量 最大值, 整数型
.程序集变量 边缘图像, 矩阵类
.程序集变量 轮廓, 线容器类
.程序集变量 层次结构, 向量4整型容器类
.程序集变量 效果图像窗口, 文本型
.程序集变量 轮廓图窗口, 文本型
.程序集变量 二值图像, 矩阵类
.程序集变量 缩放图像, 矩阵类
.程序集变量 剪切图像, 矩阵类
.程序集变量 形态学图像, 矩阵类
.程序集变量 保存目录, 文本型
.程序集变量 _分解, 文本型, , "0"
.程序集变量 程序集X像素毫米比例, 小数型
.程序集变量 程序集Y像素毫米比例, 小数型
.程序集变量 程序集X原点偏移比例, 小数型
.程序集变量 程序集Y原点偏移比例, 小数型
.程序集变量 程序集A原点偏移比例, 小数型
.程序集变量 取回文件, 文本型
.程序集变量 Token, 整数型
.程序集变量 ImageFormat, 整数型
.子程序 __启动窗口_创建完毕
设置图片参数 ()
拖放对象1.注册拖放控件 (_启动窗口.取窗口句柄 ())
滑块条1.位置 = 到整数 (读配置项 (取运行目录 () + “\1.ini”, “12”, “11”, “40”))
程序集X像素毫米比例 = 到小数 (读配置项 (取运行目录 () + “\1.ini”, “13”, “11”, “11.8”))
程序集Y像素毫米比例 = 到小数 (读配置项 (取运行目录 () + “\1.ini”, “14”, “11”, “11.8”))
X像素毫米比例.内容 = 到文本 (程序集X像素毫米比例)
Y像素毫米比例.内容 = 到文本 (程序集Y像素毫米比例)
_设定数据_被单击 ()
.子程序 转换图像格式, 逻辑型, , 成功返回“真”,失败返回“假”。
.参数 源文件, 文本型
.参数 目标文件, 文本型
.参数 转换格式, 整数型, , 转换后的图片格式。1、bmp;2、jpg;3、gif;4、tiff;5、png
.局部变量 Clsid, 字节集
.局部变量 Image, 整数型
.局部变量 pStr, 文本型
.局部变量 ret, 整数型
.判断开始 (转换格式 = 1) ' bmp
pStr = “{557CF400-1A04-11D3-9A73-0000F81EF32E}”
.判断 (转换格式 = 2) ' jpg
pStr = “{557CF401-1A04-11D3-9A73-0000F81EF32E}”
.判断 (转换格式 = 3) ' gif
pStr = “{557CF402-1A04-11D3-9A73-0000F81EF32E}”
.判断 (转换格式 = 4) ' tiff
pStr = “{557CF405-1A04-11D3-9A73-0000F81EF32E}”
.判断 (转换格式 = 5) ' png
pStr = “{557CF406-1A04-11D3-9A73-0000F81EF32E}”
.默认
.判断结束
Clsid = 取空白字节集 (16)
CLSIDFromString (A2W (pStr), Clsid) ' 获取图像格式对应的Clsid
GdipLoadImageFromFile (A2W (源文件), Image) ' 加载图像
ret = GdipSaveImageToFile (Image, A2W (目标文件), Clsid, 0) ' 保存转换的图像。第四个参数可对图像质量等信息操作,若该参数为0,则使用默认解码器参数。
GdipDisposeImage (Image) ' 销毁图像,释放资源
.如果真 (ret = 0)
返回 (真)
.如果真结束
返回 (假)
.子程序 A2W, 字节集, , 将Ansi转成Unicode
.参数 欲转换的文本, 文本型
.局部变量 缓冲区, 字节集
.局部变量 缓冲区大小, 整数型
缓冲区大小 = MultiByteToWideChar (0, 0, 欲转换的文本, -1, { }, 0) × 2
缓冲区 = 取空白字节集 (缓冲区大小)
MultiByteToWideChar (0, 0, 欲转换的文本, 取文本长度 (欲转换的文本), 缓冲区, 缓冲区大小)
返回 (缓冲区)
.子程序 设置图片参数
.局部变量 GpInput, GdiplusStartupInput
GpInput.GdiplusVersion = 1
GdiplusStartup (Token, GpInput, 0)
ImageFormat = 5
.子程序 __启动窗口_可否被关闭, 逻辑型
GdiplusShutdown (Token) ' 关闭 GDI+
.子程序 _处理图片_被单击
.局部变量 起点, 点型
.局部变量 终点, 点型
.局部变量 结果元素, 矩阵类
处理图片.禁止 = 真
最小值 = 10
源图像.创建从文件 (取运行目录 () + “\1.bmp”, )
.如果真 (源图像.空的 ())
信息框 (“加载图像失败。请先拖入图片进行识别”, 0, , )
返回 ()
.如果真结束
颜色转换 (源图像.指针 (), 灰度图像.指针 (), #COLOR_BGR2GRAY, )
模糊1 (灰度图像.指针 (), 灰度图像.指针 (), 大小 (6, 6), , )
二值化 (灰度图像.指针 (), 二值图像.指针 (), 到小数 (滑块条1.位置), 254, #THRESH_BINARY_INV)
结果元素.置指针 (取结构元素 (#MORPH_RECT, 大小 (4, 4), ), )
形态学变换 (二值图像.指针 (), 形态学图像.指针 (), #MORPH_CLOSE, 结果元素.指针 (), , 1, #BORDER_REFLECT_101)
滑块回调2 ()
处理图片.禁止 = 假
.子程序 滑块回调2
.局部变量 滑块位置, 整数型
.局部变量 结果图像, 矩阵类
.局部变量 i, 整数型
.局部变量 颜色, 标量型
.局部变量 矩形, 矩形类
.局部变量 临时图像, 矩阵类
.局部变量 匹配结果, 双精度小数型
.局部变量 点容器, 点容器类
.局部变量 x, 整数型
.局部变量 轮廓点, 点型
.局部变量 面积, 整数型
.局部变量 小图像, 矩阵类
.局部变量 后台图像, 矩阵类
.局部变量 轮廓数据, 文本型
.局部变量 一个轮廓, 文本型
.局部变量 开枪代码1, 整数型
.局部变量 起点代码1, 文本型
.局部变量 计数判断, 整数型
.局部变量 零时轮廓数据, 文本型, , "0"
.局部变量 总G代码, 文本型
.局部变量 单G代码, 文本型
临时图像.置指针 (剪切图像.克隆1 ())
最小值 = 40
寻找边缘 (形态学图像.指针 (), 边缘图像.指针 (), 最小值, 最小值 × 4, 3, )
图片框1.图片 = 边缘图像.取图像 (, , )
轮廓.清除 ()
寻找轮廓1 (边缘图像.指针 (), 轮廓.指针 (), 层次结构.指针 (), #RETR_EXTERNAL, #CV_CHAIN_APPROX_TC89_L1)
' CV_CHAIN_APPROX_TC89_L1
计数判断 = 0
总G代码 = “”
.变量循环首 (0, 轮廓.取大小 () - 1, 1, i)
处理事件 ()
延迟 (1)
矩形.置指针 (边界矩形 (轮廓.指针 (), i))
面积 = 矩形.取宽 () × 矩形.取高 ()
.如果 (面积 > 20 × 20)
颜色 = 标量 (取随机数 (0, 255), 取随机数 (0, 255), 取随机数 (0, 255))
画矩形从矩形指针标量 (临时图像.指针 (), 矩形.指针 (), 颜色, 2, )
开枪代码1 = 0
点容器.置指针 (轮廓.取点容器指针 (i), 真)
单G代码 = “M03” + #换行符
.变量循环首 (0, 点容器.取大小 () - 1, 1, x)
轮廓点 = 点容器.取成员 (x)
单G代码 = 单G代码 + “G1 X” + 到文本 (四舍五入 (到小数 (轮廓点.x) ÷ 程序集X像素毫米比例, 3)) + “ Y” + 到文本 (四舍五入 (到小数 (轮廓点.y) ÷ 程序集Y像素毫米比例, 3)) + “ F1000” + #换行符
一个轮廓 = 一个轮廓 + “VERTEX” + #换行符 + “ 8” + #换行符 + “0” + #换行符 + “ 10” + #换行符 + 到文本 (四舍五入 (到小数 (轮廓点.x) ÷ 程序集X像素毫米比例, 3)) + #换行符 + “ 20” + #换行符 + 到文本 (四舍五入 (到小数 (轮廓点.y) ÷ 程序集Y像素毫米比例, 3)) + #换行符 + “ 0” + #换行符
.变量循环尾 ()
单G代码 = 单G代码 + “M05” + #换行符
总G代码 = 总G代码 + 单G代码 + #换行符
计数判断 = 计数判断 + 1
加入成员 (零时轮廓数据, 一个轮廓)
一个轮廓 = “”
起点代码1 = “”
单G代码 = “”
.否则
.如果结束
.变量循环尾 ()
.如果 (取数组成员数 (零时轮廓数据) > 1)
.计次循环首 (取数组成员数 (零时轮廓数据) - 1, i)
轮廓数据 = 轮廓数据 + 零时轮廓数据 + #多线段分割 + #换行符
.计次循环尾 ()
轮廓数据 = 轮廓数据 + 零时轮廓数据 [取数组成员数 (零时轮廓数据)]
.否则
.如果 (取数组成员数 (零时轮廓数据) = 1)
轮廓数据 = 零时轮廓数据 [1]
.否则
.如果结束
.如果结束
轮廓数据 = #头文本 + #换行符 + 轮廓数据 + “SEQEND” + #换行符 + “ 8” + #换行符 + “0” + #换行符 + “ 0” + #换行符 + “ENDSEC” + #换行符 + “ 0” + #换行符 + “EOF”
写到文件 (取运行目录 () + “\提取出的数据.dxf”, 到字节集 (轮廓数据))
写到文件 (取运行目录 () + “\提取出的数据.nc”, 到字节集 (总G代码))
.子程序 _设定数据_被单击
程序集X像素毫米比例 = 到小数 (X像素毫米比例.内容)
程序集Y像素毫米比例 = 到小数 (Y像素毫米比例.内容)
写配置项 (取运行目录 () + “\1.ini”, “13”, “11”, 到文本 (X像素毫米比例.内容))
写配置项 (取运行目录 () + “\1.ini”, “14”, “11”, 到文本 (Y像素毫米比例.内容))
.子程序 _计算比例_被单击
比例等于.内容 = 到文本 (到小数 (像素.内容) ÷ 到小数 (实际毫米数.内容))
.子程序 _拖放对象1_得到文件
.参数 接收到的文件路径, 文本型
转换图像格式 (接收到的文件路径, 取运行目录 () + “\1.bmp”, 1)
图片框1.图片 = 读入文件 (取运行目录 () + “\1.bmp”)
.子程序 _滑块条1_鼠标左键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 起点, 点型
.局部变量 终点, 点型
.局部变量 结果元素, 矩阵类
最小值 = 50
写配置项 (取运行目录 () + “\1.ini”, “12”, “11”, 到文本 (滑块条1.位置))
' 最大值 = 255
源图像.创建从文件 (取运行目录 () + “\1.bmp”, )
.如果真 (源图像.空的 ())
信息框 (“加载图像失败。请先拖入图片进行识别”, 0, , )
返回 ()
.如果真结束
颜色转换 (源图像.指针 (), 灰度图像.指针 (), #COLOR_BGR2GRAY, )
模糊1 (灰度图像.指针 (), 灰度图像.指针 (), 大小 (6, 6), , )
二值化 (灰度图像.指针 (), 二值图像.指针 (), 到小数 (滑块条1.位置), 254, #THRESH_BINARY_INV)
图片框1.图片 = 二值图像.取图像 (, , )
.版本 2
.常量 头文本, "<文本长度: 5313>"
.常量 多线段分割, "<文本长度: 99>"
[e=0][/e]
|
|