设置首页收藏本站在线聊天
授权版本:2024_09
开启左侧

overpaint_string

[复制链接]
张满满 发表于 2022-10-18 14:33:00 | 显示全部楼层 |阅读模式
本帖最后由 张满满 于 2023-2-16 18:15 编辑

黑白图

黑白图

黑白图

黑白图

彩色图

彩色图

  1. dev_update_off ()
  2. *****Gray图片写入Gray文字****
  3. read_image (Image, 'fabrik')
  4. overpaint_string (Image, '这是一条文字\r\n这是第二行\r\nNewLine', 0, 0, [1,155,6], 'mono',80)
  5. dev_display (Image)
  6. stop ()
  7. *****Gray图片写入RGB文字****
  8. read_image (Image, 'fabrik')
  9. cfa_to_rgb (Image, RGBImage, 'bayer_gb', 'bilinear')
  10. overpaint_string (RGBImage, '这是一条文字\r\n这是第二行\r\nNewLine', 200, 100, [255,0,0], 'mono', 30)
  11. dev_display (RGBImage)
  12. stop ()
  13. *****RGB图片写入RGB文字****
  14. read_image (Image, 'brycecanyon1')
  15. overpaint_string (Image, '这是一条文字\r\n这是第二行\r\nNewLine', 100, 100, [0,255,255], 'mono', 50)
  16. dev_display (Image)
  17. stop ()
  18. overpaint_string (Image, ' 5 5', 10, 10, [0,0,255], 'mono', 30)
  19. dev_display (Image)
复制代码

overpaint_string.hdvp (4.23 KB, 下载次数: 20)


****内部代码*****
  1. try
  2.     dev_update_off ()
  3.     dev_set_color ('white')
  4.     open_window (0, 0, 1, 1, 0, 'buffer', '', WindowHandleBuffer)
  5.     set_tposition (WindowHandleBuffer, 1, 1)
  6.     set_display_font (WindowHandleBuffer, FontSize, Font, 'false', 'false')
  7.     count_channels (SrcImg, Channels)
  8.     tuple_regexp_replace (Str, ['(^\\s*)|(\\s*$)','replace_all'], '', Str2)
  9.     if (Str2='')
  10.         return ()
  11.     endif
  12.     grayCount:= |GrayVal|
  13.     if ((grayCount=1 and Channels=1) or (grayCount=3 and Channels=3))
  14.         gray := GrayVal
  15.     elseif (grayCount=3 and Channels=1)
  16.         gray := 0.299 * GrayVal[0] + 0.587 * GrayVal[1] + 0.114 * GrayVal[2]   
  17.     elseif (grayCount=1 and Channels=3)
  18.         gray := [GrayVal,GrayVal,GrayVal]   
  19.     else
  20.         throw ('仅支持RGB及灰度图像')
  21.     endif
  22.     tuple_split (Str, ['\r\n'], Substrings)
  23.     count:=|Substrings|
  24.     fontCounts:=[]
  25.     height:=0
  26.     widths:=[]
  27.     for Index1 := 0 to count-1 by 1
  28.         get_string_extents (WindowHandleBuffer, Substrings[Index1], Ascent, Descent, Width, Height)
  29.         height:=height+Height
  30.         widths[Index1]:= Width
  31.     endfor
  32.     Max:=max(widths)
  33.     set_window_extents (WindowHandleBuffer, 0, 0, Max*1.5, height*1.7)
  34.     for Index := 0 to count-1 by 1   
  35.         write_string (WindowHandleBuffer, Substrings[Index])
  36.         if (Index==count-1)
  37.             break
  38.         endif
  39.         new_line (WindowHandleBuffer)
  40.     endfor
  41.     dump_window_image (strImg, WindowHandleBuffer)
  42.     rgb1_to_gray (strImg, GrayImage)
  43.     binary_threshold (GrayImage, Region, 'max_separability', 'light', UsedThreshold)
  44.     smallest_rectangle1 (Region, Row1, Column1, Row2, Column2)
  45.     move_region (Region, RegionMoved, Row-2, Col-2)
  46.     overpaint_region (SrcImg, RegionMoved, gray, 'fill')
  47.     close_window (WindowHandleBuffer)  
  48. catch (Exception)
  49.     throw (Exception)
  50. endtry
  51. return ()
复制代码
希望对大家有所帮助


奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
dinury 发表于 2022-10-21 19:22:13 | 显示全部楼层
试着看看这个封装代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
anprince 发表于 2022-10-21 18:08:22 | 显示全部楼层
anprince 发表于 2022-10-21 18:02
高版本也没有overpaint_string这个算子吧,这是楼主自己写的自定义算子吧

自定义算子,加密了 不过可以拉到Halcon中使用
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
anprince 发表于 2022-10-21 18:02:26 | 显示全部楼层
高版本也没有overpaint_string这个算子吧,这是楼主自己写的自定义算子吧
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Jo_Kang 发表于 2022-10-20 09:37:23 | 显示全部楼层
低版本没有overpaint_string 算子的
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
大力小丸子 发表于 2022-10-20 08:47:07 | 显示全部楼层
这个是哪个版本的,我的17的打不开
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表