数学运算无非就加减乘除这些,这次就直接上代码,有兴趣的可以自己玩玩。
**要求:**慢慢的连续按F6一步步查看图像处理效果。
read_image (Checbox, 'C:/Users/LWJ/Desktop/AS_1/checbox.jpg')
read_image (Password, 'C:/Users/LWJ/Desktop/AS_1/password.jpg')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
abs_image (Password, ImageAbs) //计算一个图像的绝对值(模数)
dev_display (ImageAbs)
disp_message (WindowHandle, '绝对值', 'window', 0, 0, 'black', 'true') //显示用到的数学式子
add_image (Checbox, Password, ImageResult, 0.5, 0) //两个图像相加
dev_display (ImageResult)
disp_message (WindowHandle, '加法', 'window', 5, 0, 'black', 'true')
sub_image (Checbox, Password, ImageSub, 1, 128) //两个图像的相减
dev_display (ImageSub)
disp_message (WindowHandle, '减法', 'window', 10, 0, 'black', 'true')
mult_image (Checbox, Password, ImageResult2, 0.005, 0) //两个图像的相乘
dev_display (ImageResult2)
disp_message (WindowHandle, '乘法', 'window', 15, 0, 'black', 'true')
div_image (Checbox, Password, ImageResult1, 255, 0) //两个图像相除
dev_display (ImageResult1)
disp_message (WindowHandle, '除法', 'window', 20, 0, 'black', 'true')
max_image (Checbox, Password, ImageMax) //按像素计算两个图像的最大值
dev_display (ImageMax)
disp_message (WindowHandle, '两者最大值', 'window', 25, 0, 'black', 'true')
min_image (ImageMax, ImageMax, ImageMin) //按像素计算两个图像的最小值
dev_display (ImageMin)
disp_message (WindowHandle, '两者最小值', 'window', 30, 0, 'black', 'true')
invert_image (Password, ImageInvert) //一个图像的反像,即黑变白,白变黑
dev_display (ImageInvert)
disp_message (WindowHandle, '反像', 'window',35,0, 'black', 'true')
sqrt_image (Checbox, SqrtImage) //一个图像的平方根
**思路:**先是用read_image算子读取两张图片,想用哪张图片就用对应的图片名称作为数学运算。运算完成后采用显示图像算子dev_display, 用编辑文本消息算子 ————— disp_message来显示用了什么数学式子。
**说明:**dev_close_window 和dev_open_window 分别为关闭窗口、打开窗口,关闭再打开是为了把先前的窗口图像内容清除。而且在往后联合VS编程时,打开窗口这个算子必不可少,因为VS的窗口控件与halcon内自带的窗口不对应,必须手动在halcon里打开一个窗口,那么联合VS时就会弹出一个新的窗口,然后将弹出窗口覆盖到窗口控件上即可。
dev_display为显示图像算子,第一个算子为窗口句柄,即选择显示在哪个窗口上;第二个参数为显示内容;第三个参数如果设置为“window”,则文本位置相对于窗口坐标系统给出。如果设置为“image”,则使用图像坐标(这在缩放图像中可能有用);第四、五个参数为图像行列坐标;第六个参数为字体颜色;第七个参数看帮助文档也看不懂,应该就是设置显示在哪个框的意思吧?默认设置就好。