一、说明

halcon的数据可视化不是很发达。因此,做出数据表、曲线等,需要自己开发。本文讲如何显示灰度图的直方图。

 

二、代码实现

2.1 显示原图和直方图代码

此为主调用函数,包括读入原图、生成直方图、显示直方图。

read_image (Image, 'D:/images/maps/david.jpg')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandleImage)
disp_image(Image, WindowHandleImage)
dev_open_window (0, Width + 5, Width, Height, 'black', WindowHandleHisto)
gray_histo(Image,Image, AbsoluteHisto, RelativeHisto)dev_set_window (WindowHandleHisto)
dev_clear_window ()
dev_set_draw ('fill')
Min:=0
Max:=255
HistoBorder := 0.2
plot_histo( AbsoluteHisto, WindowHandleHisto, 'Gray values', Min, Max, 'white', 'dim gray', HistoBorder)

其中,plot_histo是自定义函数,下面介绍如何生成这个自定义函数。

2.2 自定义函数plot_histo

第一步:打开自定义函数菜单

第二步:输入函数名

第三步、输入参数

 

第四步、将以下代码粘入


* This procedure plots the Histogram within the value range
* [LabelXMin,LabelXMax] into the WindowHandle by leaving a
* relative Border around the plot.
*
if (|Histogram| <= 0 or Border < 0 or Border >= 1)disp_message (WindowHandle, 'Failed to plot histogram', 'window', 12, 12, 'black', 'true')return ()
endif
*
* Determine the area to be used for the plot.
get_part (WindowHandle, Row1, Column1, Row2, Column2)
PlotAreaX := (Column2 - Column1 + 1) * (1 - Border * 2)
PlotAreaY := (Row2 - Row1 + 1) * (1 - Border * 2)
OriginX := Column1 + Border * (Column2 - Column1 + 1)
OriginY := Row2 - Border * (Row2 - Column1 + 1)
*
* Determine the extent of the function to be plotted
MinY := min([Histogram,0])
MaxY := max(Histogram)
*
* Determine the scaling values
ScaleX := PlotAreaX / |Histogram|
if (MaxY == MinY)ScaleY := PlotAreaYMaxY := ''
elseScaleY := PlotAreaY / (MaxY - MinY)
endif
*
* Display the histogram values
polyX := []
polyY := []
for Value := 0 to |Histogram| - 1 by 1polyX := [polyX,OriginX + Value * ScaleX]polyY := [polyY,OriginY - (Histogram[Value] - MinY) * ScaleY]polyX := [polyX,OriginX + (Value + 1) * ScaleX]polyY := [polyY,OriginY - (Histogram[Value] - MinY) * ScaleY]
endfor
polyX := [polyX,OriginX + |Histogram| * ScaleX,OriginX]
polyY := [polyY,OriginY,OriginY]
dev_set_window (WindowHandle)
dev_set_line_width (1)
dev_set_color (ColorGraph)
gen_region_polygon_filled (Histo, polyY, polyX)
dev_display (Histo)
*
* Display the coordinate system
dev_set_line_width (1)
dev_set_color (ColorAxis)
gen_arrow_contour_xld (ArrowX, OriginY, OriginX, OriginY, OriginX + PlotAreaX, 5, 5)
gen_arrow_contour_xld (ArrowY, OriginY, OriginX, OriginY - PlotAreaY, OriginX, 5, 5)
dev_display (ArrowX)
dev_display (ArrowY)
*
dev_set_color (ColorAxis)
get_string_extents (WindowHandle, LabelX, Ascent, Descent, W, H)
set_tposition (WindowHandle, OriginY + 10, OriginX + PlotAreaX / 2 - W / 2)
write_string (WindowHandle, LabelX)
*
if (int(ValueXMin) == ValueXMin)MinXD := int(ValueXMin)
elseMinXD := ValueXMin
endif
get_string_extents (WindowHandle, MinXD$'3.1f', Ascent1, Descent1, W, H)
set_tposition (WindowHandle, OriginY + 10, OriginX)
write_string (WindowHandle, MinXD$'3.1f')
if (int(ValueXMax) == ValueXMax)MaxXD := int(ValueXMax)
elseMaxXD := ValueXMax
endif
get_string_extents (WindowHandle, MaxXD$'3.1f', Ascent2, Descent2, W, H)
set_tposition (WindowHandle, OriginY + 10, OriginX + PlotAreaX - W)
write_string (WindowHandle, MaxXD$'3.1f')
get_string_extents (WindowHandle, MinY, Ascent3, Descent3, W, H)
set_tposition (WindowHandle, OriginY - H, OriginX - 10 - W)
write_string (WindowHandle, MinY)
get_string_extents (WindowHandle, MaxY, Ascent4, Descent4, W, H)
set_tposition (WindowHandle, OriginY - PlotAreaY, OriginX - 10 - W)
write_string (WindowHandle, MaxY)
*
return ()

注意:需要将调用文件和自定义函数文件放在一个路径就可以调用。

Halcon知识:如何画出灰度图像直方图相关推荐

  1. halcon画出灰度直方图_halcon读取一张照片,并转化为灰度图像

    dev_close_window () read_image (Image, 'E:/图片/123.jpg') get_image_size (Image, Width, Height) dev_op ...

  2. halcon知识:hough变换检出图像的直线

    一.说明 用hough变换查找直线:hough的原理见文章:  图像处理:Hough变换原理分析 此文专门介绍halcon的具体算子实现. 二.示例代码 * Detect lines in an im ...

  3. 【天池基础知识】 - 查看特征变量的相关性(计算相关性系数+画出热力图+筛选特征变量+Box-Cox变换)

    文章目录 1.计算相关性系数 2.画出热力图 3.筛选特征变量 4.Box-Cox变换 1.计算相关性系数 使用函数corr() 代码展示: train_corr = train_data.corr( ...

  4. matlab 画随机数图,怎么用matlab生成100个标准正态分布的随机数并画出直方图

    正态分布是normpdf(x,mu,sigma)mu sigma 默认是 0 1例子ez 由热心网友提供的答案1: %生成一组随机数(正态分布)data=normrnd(0,1,1,500);%绘制直 ...

  5. python 用画布组件画直方图_7招用Python画出酷酷的|散点直方图

    原标题:7招用Python画出酷酷的|散点直方图 这是菜鸟学Python的第103篇原创文章 数据可视化前面已经写了2篇(,),今天我们接着来讲比较常见的散点图和直方图.这两种图用法上各有千秋,散点图 ...

  6. 画出识别c语言注释的转换图,C语言程序设计基础与实训教程》第1章:基础知识.ppt...

    <C语言程序设计基础与实训教程>第1章:基础知识.ppt>由会员分享,可在线阅读,更多相关<C语言程序设计基础与实训教程>第1章:基础知识.ppt(25页珍藏版)> ...

  7. Java基础知识运用,用对象,线程,Java窗口画出太阳系

    一个项目让你搞懂对象:Java基础知识运用,用对象,线程,GUI画出太阳系 一.需求分析: 用java基础知识画出太阳系八大行星的运行轨迹图,要求:运行轨迹图是动态图片,画出运行轨迹,画出地月系(不需 ...

  8. 【Python】怎么用matplotlib画出漂亮的分析图表

    特征锦囊:怎么用matplotlib画出漂亮的分析图表 ???? Index 数据集引入 折线图 饼图 散点图 面积图 直方图 条形图 关于用matplotlib画图,先前的锦囊里有提及到,不过那些图 ...

  9. 用python画出简单笑脸画法_【Python】怎么用matplotlib画出漂亮的分析图表

    特征锦囊:怎么用matplotlib画出漂亮的分析图表 ? Index 数据集引入 折线图 饼图 散点图 面积图 直方图 条形图 关于用matplotlib画图,先前的锦囊里有提及到,不过那些图都是比 ...

最新文章

  1. selenium 验证码识别_如何获取验证码?
  2. angular input和output
  3. 深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(5)
  4. runtime--实现篇02(Category增加属性)
  5. java8 默认方法_如何不使用Java 8默认方法
  6. python get post请求_使用python封装get+post请求
  7. ssh不能进入save方法_快速理清为什么你的redis未授权不能getshell
  8. 路由 mysql,Mysql复制之路由
  9. mysql scws_php利用scws实现mysql全文搜索功能的方法
  10. “空天地”一体化的遥感农业保险简介
  11. c++关于函数的参数传递全部知识点详解
  12. mysql的索引(一)
  13. electron打包失败在下载nsis的地方
  14. 60万餐厅数据为你画出全国美食地图(附技术讲解)
  15. 自学iOS开发系列----UI(视图编程入门:UIScrollView)
  16. 1.win7与Ubuntu文件共享工具-Samba安装及使用方法
  17. python中def _init_是什么意思_python3类中的def __init()__如何使用?
  18. Win10你要以何方式打开此网站 确定不能点解决方法
  19. 下一个行业风口:NFT 数字藏品,是机遇还是泡沫?
  20. CTF怎么快速入门?

热门文章

  1. matlab基础入门之教你如何实现最小二乘法(附MATLAB代码)
  2. s5pv210 linux内核移植,简单根文件系统制作 - S5PV210 Linux3.8.3内核移植_Linux编程_Linux公社-Linux系统门户网站...
  3. hp打印机怎么连接电脑_hp打印机驱动怎么共享 惠普打印机如何安装【详解】
  4. 自然语言处理NLP-100例 | 第三篇:骚扰短信识别 MultinomialNB实现(内附源码)
  5. 时序数据-LSTM模型-实现用电量预测
  6. APACHE TOMCAT INTERVIEW QUESTIONS ANSWERS【转】
  7. 如何判断服务器之间的服务是否可用?ping 还是 telnet?
  8. 当我们在谈深度学习时,到底在谈论什么(三)--转
  9. solr源码分析之数据导入DataImporter追溯。
  10. Spring(AbstractRoutingDataSource)实现动态数据源切换--转载