6.1 图像通道与转换
append_channel作用: 将Image图像的通道与MultiChannelImage图像的通道叠加得到新图像。
decompose3(MultiChannelImage: Imagel, Image2, Image3: :)作用:转换三通道彩色图像为三个单通道灰度图像。
read_image (Rectangle, './images/rectangle.png') *1.获得图像的通道 count_channels (Rectangle, Channels) dev_display (Rectangle) disp_message (3600, Channels, 'window', 12, 12, 'black', 'true') * 2.图像灰度化 rgb1_to_gray (Lena1, GrayImage) * 3.分解RGB通道,转换为三个单通道的图像 decompose3 (Lena1, ImageR, ImageG, ImageB) *访问某个通道(RGB) access_channel (Lena1, Image_Rect_R, 1) access_channel (Lena1,Image_Rect_G,1) access_channel (Lena1, Image_Rect_B, 1) *5.添加通道 append_channel (ImageR, ImageR, ImageExtended) * 6.合成三通道图 compose3 (Image_Rect_R, Image_Rect_G,Image_Rect_B, MultiChannelImage) *RGB转HSV通道 trans_from_rgb (ImageR, ImageG, ImageB, \ ImageH, ImageS, ImageV, 'hsv') *HSV转RGB trans_from_rgb (ImageH, ImageS, ImageV, ImageR, ImageG, ImageB, 'hsv')
6.2构造实心圆
height:=100 c_x:=width/2 c_y:=height/2 * 半径 radius:=15 gen_image_const (Image_R, 'byte', width,height) gen_image_const (Image_G, 'byte',width,height) gen_image_const (Image_B, 'byte', width,height) for r := 0 to height-1 by 1 for c := 0 to width-1 by 1 value:=(c-c_x)* (c-c_x)+ (r-c_y)*(r-c_y) dist:=fabs(sqrt(value)) if (dist<=radius) r_gray:=0 g_gray:=255 b_gray:=0 else r_gray:=255 g_gray:=255 b_gray:=255 endif set_grayval (Image_R, r, c, r_gray) set_grayval (Image_G, r, c, g_gray) set_grayval (Image_B, r, c, b_gray) endfor endfor compose3 (Image_R, Image_G,Image_B, ImageRGB) write_image (ImageRGB, 'png', 0, './images/circle')
6.3构造矩形框
height:=100 top:=25 bottom:=75 left:=30 right:=90 gen_image_const (Image_R, 'byte', width,height) gen_image_const (Image_G, 'byte',width,height) gen_image_const (Image_B, 'byte', width,height) for r := 0 to height-1 by 1 for c := 0 to width-1 by 1 if ((r==top or r==bottom) and (left<= c and c<=right)) r_gray:=255 g_gray:=0 b_gray:=0 elseif ((r>=top and r<=bottom) and (left== c or c==right)) *竖直边限定条件 r_gray:=255 g_gray:=0 b_gray:=0 else r_gray:=255 g_gray:=255 b_gray:=255 endif set_grayval (Image_R, r, c, r_gray) set_grayval (Image_G, r, c, g_gray) set_grayval (Image_B, r, c, b_gray) endfor endfor compose3 (Image_R, Image_G,Image_B, ImageRGB) *保存图 write_image (ImageRGB, 'png', 0, './images/rectangle') *HALCON算子规则 *输入icon ; 输出icon ; 输入control ; 输出control
6.4分解合成
*rgb->gray 彩色图灰度化 dev_get_window (WindowHandle) read_image (circle, './images/circle') read_image (rectangle, './images/rectangle') decompose3 (rectangle, rectangleR, rectangleG, rectangleB) decompose3 (circle, circleR, circleG, circleB) *任务:使用 分解合成 的方法构造下列图像 原图(自己构造的 box cicle) *画图板中调色板信息参考 **0 白色图 **1 蓝色圆 **2 绿色框 **3 蓝色框(黄色)圆 **4 绿色框(紫色)圆 **0 白色图 25 5 255 255 compose3 (rectangleR, rectangleR, rectangleR, white_bg) **1 蓝色圆 0 0 255 compose3 (circleR, circleR, circleG, blueCircle) **2 绿色框 0 255 0 compose3 (rectangleG, rectangleR, rectangleG, green_box) **3 蓝色框(黄色)圆 box: 0 0 255 circle:: compose3 (rectangleG, rectangleB, circleR, blue_box_1) **4 绿色框(紫色)圆 box: 0 255 0 compose3 (rectangleG, circleR, rectangleB, green_box_1)