QQ登录

只需一步,快速开始

上位机HALCON视觉 Graphics图形相关函数介绍二

[ 复制链接 ]
119. clear_rectangle( : : WindowHandle, Row1, Column1, Row2, Column2 : )
删除矩形内所有条目,删除significates,指定矩形设置为背景色(见open_window,open_textwindow)。
如果你想删除多个矩形,你可以通过几个矩形实现,即参数row1,column1,row2和column2传递进数组。
120. copy_rectangle( : : WindowHandleSource, WindowHandleDestination, Row1,Column1, Row2, Column2, DestRow, DestColumn : )
复制窗口上指定矩形内容到另一窗口。例如执行
copy_rectangle(hWnd, hWnd, 0, 0, 128, 128, 10,10)
121. move_rectangle( : : WindowHandle, Row1, Column1, Row2, Column2, DestRow,DestColumn : )
移动窗口上指定矩形内容到窗口指定位置
122. clear_window( : : WindowHandle : )
清空指定窗口上内容
123. close_window( : : WindowHandle : )
关闭指定输出窗口
124. open_window( : : Row, Column, Width, Height, FatherWindow, Mode, Machine :WindowHandle)
打开一个图形窗口
125. dump_window( : : WindowHandle, Device, FileName : )
将指定窗口内容保存为文件
126. dump_window_image( : Image : WindowHandle : )
将窗口内容写入到一个图像对象;
127. get_disp_object_model_3d_info( : : WindowHandle, Row, Column, Information :Value)
获取显示的3D对象模型的深度或索引
128.get_os_window_handle( : : WindowHandle : OSWindowHandle, OSDisplayHandle)
返回halcon窗口windowhandle所在的操作系统的窗口句柄OSWindowHandle。类似Unix系统下,操作系统显示句柄返回保存在OSDisplayHandle。操作系统窗口句柄可以用操作系统函数访问窗口。例如,将用户定义的方式绘制到窗口中。
在Windows中,OSWindowHandle可以转换为HWND类型的变量。Unix系统下,OSWindowHandle可以铸入型窗变量,而OSDisplayHandle可以转换成显示类型变量
129. set_window_attr( : : AttributeName, AttributeValue : )
设置窗口属性
130. get_window_attr( : : AttributeName : AttributeValue)
获取窗口属性
131. set_window_extents( : : WindowHandle, Row, Column, Width, Height : )
修改窗口位置与尺寸
132. get_window_extents( : : WindowHandle : Row, Column, Width, Height)
获取窗口位置与尺寸信息
133. query_window_type( : : : WindowTypes)
获取全部有效窗口类型
134. set_window_type( : : WindowType : )
设置窗口类型
135. get_window_type( : : WindowHandle : WindowType)
获取窗口类型
136. new_extern_window( : : WINHWnd, Row, Column, Width, Height : WindowHandle)
在windows下创建虚拟图形窗口,仅在 Windows系统下生效,
虚拟意味着一个新的窗口将不会被创建,但通过参数winhwnd指定的窗口句柄用于显示区域,灰度值,图形以及文本。
对于数据的可视化输出参数可以使用HALCON的命令或通过适当的Windows命令。
137. open_textwindow( : : Row, Column, Width, Height, BorderWidth, BorderColor,BackgroundColor, FatherWindow, Mode, Machine : WindowHandle)
打开文本窗口
138. set_window_dc( : : WindowHandle, WINHDC : )
设置先前用new_extern_window打开的虚拟图形窗口(Windows NT)的设备上下文
所有的输出(disp_region,disp_image,等)是在窗口里用这个设备上下文完成。
参数winhdc包含窗口设备上下文,HALCON在此窗口输出数据。HALCON所有输出例程使用设备上下文。
139. get_window_pointer3( : : WindowHandle : ImageRed, ImageGreen, ImageBlue,Width, Height)
get_window_pointer3使(在一些窗口系统)的位图可直接访问。
结果值在24位颜色窗口提取三分(imagered,imagegreen,imageblue),还可获取窗口尺寸(宽度,高度)。
在C语言中,图像点的类型是无符号字符。
140. slide_image( : : WindowHandleSource1, WindowHandleSource2, WindowHandle : )
根据鼠标位置,将窗口分为水平的两个逻辑区域。
第一个显示窗口的内容被复制在上部区域。
第二个窗口的内容被复制到较低的区域中。
如果按下鼠标左键,您可以滚动两个区域之间的定界(您也可以将鼠标移到窗口之外)。这样,鼠标相对于窗口的位置决定了边界)。
按下鼠标右键slide_image终止操作。
141. unproject_coordinates(Image : : WindowHandle, Row, Column : ImageRow,ImageColumn, Height)
计算3维环境窗口中,一个点的图像坐标;
142. update_window_pose( : : WindowHandle, LastRow, LastCol, CurrentRow,CurrentCol, Mode : )
修改3维图形位姿
143. attach_background_to_window(Image : : WindowHandle : )
附上一个背景图像到halcon窗口
144. detach_background_from_window( : : WindowHandle : )
从halcon窗口分离背景图像。
145. create_drawing_object_circle( : : Row, Column, Radius : DrawID)
创建一个圆形区域,可以让用户在HALCON窗口交互修改。圆心为Row 和 Column ,半径为 Radius.。
创建的结果通过drawid返回
这些参数可以通过get_drawing_object_params,在任何时间查询,相应的HALCON对象用函数get_drawing_object_iconic。
为了启用与绘图对象的交互修改,对象必须连接到现有窗口。进一步详情请参阅attach_drawing_object_to_window。
一旦连接,圆可以由用户通过窗口内的交互进行编辑。圆对象有两种可能的转换:调整大小和位移。通过点击接近圆弧,你可以修改圆的半径。点击中心,圆可以在halcon窗口拖过。
146. attach_drawing_object_to_window( : : WindowHandle, DrawID : )
将现有绘图对象附着到halcon窗口
147. detach_drawing_object_from_window( : : WindowHandle, DrawID : )
将现有的图形对象从halcon窗口分离。
绘图对象将不再显示在窗口中。然而,除非调用clear_drawing_object,不然绘图对象仍然存在。
如果通过set_drawing_object_callback传递 'on_detach' ,调用回调函数绘制对象,也要进行清除工作
148. clear_drawing_object( : : DrawID : )
删除绘制对象
149. get_drawing_object_params( : : DrawID, ParamNames : ParamValues)
获取绘制对象指定的参数
150. set_drawing_object_params( : : DrawID, ParamNames, ParamValues : )
设置绘制对象指定的参数
151. get_window_background_image( : BackgroundImage : WindowHandle : )
获取HALCON背景图像的复制
152. set_drawing_object_callback( : : DrawID, DrawObjectEvent, CallbackFunction : )
增加一个回调函数到绘制对象
153. get_drawing_object_iconic( : Object : DrawID : )
获得绘制对象的图像对象
154. set_drawing_object_xld(Contour : : DrawID : )
设置一个交互式绘制XLD的轮廓,函数用参数Contour指定的新轮廓替代绘制对象包含的轮廓,轮廓必须包含两个点,交互才能进行。
155. create_drawing_object_xld( : : Row, Column : DrawID)
156. create_drawing_object_text( : : Row, Column, String : DrawID)
创建一个可以交互移动的文本对象
157. create_drawing_object_line( : : Row1, Column1, Row2, Column2 : DrawID)
创建个可以交到编辑的线段
158. create_drawing_object_ellipse( : : Row, Column, Phi, Radius1, Radius2 rawID)
创建一个可以交互编辑的椭圆
159. create_drawing_object_circle_sector( : : Row, Column, Radius, StartAngle,EndAngle : DrawID)
创建一个可以交互编辑的圆弧
160. create_drawing_object_ellipse_sector( : : Row, Column, Phi, Radius1,Radius2, StartAngle, EndAngle : DrawID)
创建一个可以交互编辑的椭圆弧
161. create_drawing_object_rectangle1( : : Row1, Column1, Row2, Column2 : DrawID)
创建一个平衡于轴的可交互编辑的矩形
162. create_drawing_object_rectangle2( : : Row, Column, Phi, Length1, Length2 rawID)
创建一个任意角度的可交互编辑的矩形
以上函数可使用下面例程查看效果:
dev_open_window(0,0, 512, 512, 'black', hWnd)
read_image(image,'fabrik')
disp_obj(image,hWnd)
*attach_background_to_window(image,hWnd )
*get_window_background_image(BackgroundImage,hWnd)
*detach_background_from_window(hWnd)
*create_drawing_object_circle(100,100, 80, DrawID)
*attach_drawing_object_to_window(hWnd,DrawID)
*get_drawing_object_params(DrawID,'radius',ParamValues)
*set_drawing_object_params(DrawID,'radius', 123)
*detach_drawing_object_from_window(hWnd,DrawID)
*set_drawing_object_callback(DrawID,hWnd, hWnd)
*get_drawing_object_iconic(Object,DrawID)
*create_drawing_object_xld([100,200,200,100],[100,100,200,200], DrawID1)
*gen_circle_contour_xld(ContCircle,200, 200, 100, 0, 6.28318, 'positive', 1)
*set_drawing_object_xld(ContCircle,DrawID1)
*create_drawing_object_text(12,12, 'Text', DrawID2)
*create_drawing_object_line(100,100, 200, 200, DrawID3)
*create_drawing_object_circle_sector(100,100, 80, 0, 3.14159, DrawID3)
*create_drawing_object_ellipse(200,200, 0, 100, 60, DrawID3)
*create_drawing_object_ellipse_sector(200,200, 0, 100, 60, 0, 3.14159, DrawID3)
*create_drawing_object_rectangle1(100,100, 200, 200, DrawID3)
*create_drawing_object_rectangle2(150,150, 0, 100, 100, DrawID3)
*attach_drawing_object_to_window(hWnd,DrawID3)
*clear_drawing_object(DrawID)
163. gnuplot_open_file( : : FileName : GnuplotFileID)
打开一个gnuplot文件可视化图像和控制值
164. gnuplot_plot_ctrl( : : GnuplotFileID, Values : )
用gnuplot显示一个数组控制值。
如果已有活跃的gnuplot的子过程(用gnuplot_open_pipe开始),图像在一个 gnuplot 窗口中显示。
否则,图像输出到一个文件中,文件后期可通过gnuplot读取。
在这两种情况下,gnuplot输出流通过参数GnuplotFileID标识
165. gnuplot_close( : : GnuplotFileID : )
关闭全部gnuplot文件,或终止全部活跃子进程
166. gnuplot_plot_image(Image : : GnuplotFileID, SamplesX, SamplesY,ViewRotX, ViewRotZ, Hidden3D : )
使用gnuplot三维绘图,如果有一个活跃的gnuplot的子进程(通过gnuplot_open_pipe打开),图像在一个 gnuplot 窗口中显示。
否则,图像输出到一个文件中,后面可通过gnuplot读取文件。
在这两种情况下,通过 gnuplotfileid标识gnuplot。
SamplesX和SamplesY确定X和Y方向的数据点数, gnuplot应该使用显示图像。
等同于Gnuplot变量样本和isosamples。
参数viewrotx和ViewRotZ决定场景旋转。
ViewRotX是关于X轴坐标系的旋转,而ViewRotZ是关于Z轴旋转。
这两个参数直接对应gnuplot  'set view'命令的前两个参数。
参数hidden3d决定隐藏表面是否应清除。这相当于gnuplot 的 'set hidden3d'  。
如果将单个图像传递给函数,则将其显示在单独的绘图中。如果多个图像被传递,它们将显示在同一个场景中。
167. gnuplot_open_pipe( : : : GnuplotFileID)
打开指向一个gnuplot过程的管道可视化图像和控制值。
168. gnuplot_plot_funct_1d( : : GnuplotFileID, Function : )
用Gnuplot显示一个控制值的功能
169. create_scene_3d( : : : Scene3D)
创建可视化3D对象集合所需的数据结构。
三维场景是三维对象模型、摄像机和光源的集合。
使用算子函数add_scene_3d_instance,add_scene_3d_camera,和add_scene_3d_light添加这些对象。
使用display_scene_3dScene3D在一个窗口中显示一个三维场景。
170. add_scene_3d_camera( : : Scene3D, CameraParam : CameraIndex)
在3D场景中添加一个摄像机
171. set_scene_3d_camera_pose( : : Scene3D, CameraIndex, Pose : )
在3D场景中设置摄像机的姿态
172. add_scene_3d_light( : : Scene3D, LightPosition, LightKind ightIndex)
在3D场景中添加光源
173.set_scene_3d_light_param(: : Scene3D, LightIndex, GenParamName,GenParamValue : )
设置三维场景中的光源参数
174. add_scene_3d_instance( : : Scene3D, ObjectModel3D, Pose :InstanceIndex)
将3D对象模型的实例添加到3D场景中。
175. set_scene_3d_instance_param( : : Scene3D, InstanceIndex,GenParamName, GenParamValue : )
在3D场景中设置实例的参数。
176. display_scene_3d( : : WindowHandle, Scene3D, CameraIndex : )
显示三维场景
177. render_scene_3d( : Image : Scene3D, CameraIndex : )
渲染一个3D场景的图像
178,。set_scene_3d_instance_pose( : : Scene3D, InstanceIndex, Pose : )
在3D场景中设置实例的姿势
179. set_scene_3d_param( : : Scene3D, GenParamName, GenParamValue : )
设置3D场景的参数
180. set_scene_3d_to_world_pose( : : Scene3D, ToWorldPose : )
设置3D场景的姿态
181. remove_scene_3d_camera( : : Scene3D, CameraIndex : )
从3D场景中移除相机。
182. remove_scene_3d_instance( : : Scene3D, InstanceIndex : )
从3D场景中移除实例
183. remove_scene_3d_light( : : Scene3D, LightIndex : )
从3D场景中移除光源
184. get_display_scene_3d_info( : : WindowHandle, Scene3D, Row, Column,Information : Value)
在显示的3D场景中获取实例的深度或索引
185. clear_scene_3d( : : Scene3D : )
删除3D场景并释放所有分配的内存
通过下面实例查看效果
dev_close_window()
dev_open_window(0, 0, 512, 512, 'black', hWnd)
read_object_model_3d ('pipe_joint', 'm', [], [],ObjectModel3D, Status)
CameraParam :=[0.025,0,1.1e-05,1.1e-05,384.0,288.0,768,576]
Pose1 := [-0.037,0.026,0.02,137,52,326,0]
Pose2 := [0.009,-0.011,0.0,354,317,252,0]
create_scene_3d(Scene3D)
set_scene_3d_param(Scene3D, 'quality', 'high')
add_scene_3d_camera (Scene3D,CameraParam ,CameraIndex)
set_scene_3d_camera_pose(Scene3D, CameraIndex,[0,0,-0.4,0,0,0,0])
add_scene_3d_light(Scene3D, [1.0,1.0,1.0],'point_light', LightIndex)
set_scene_3d_light_param (Scene3D, LightIndex,'diffuse', [0.8,0.8,0.8])
add_scene_3d_instance (Scene3D, ObjectModel3D,Pose1, InstanceIndex)
set_scene_3d_instance_param (Scene3D,InstanceIndex, 'color', '#062d64')
set_scene_3d_instance_pose(Scene3D,InstanceIndex, Pose2)
display_scene_3d(hWnd, Scene3D, InstanceIndex)
render_scene_3d(Image, Scene3D, InstanceIndex)
set_scene_3d_to_world_pose (Scene3D,[0,0,0,0.1,0,0,0])
*get_display_scene_3d_info(hWnd, Scene3D, 240,420, 'object_index', Value)
remove_scene_3d_camera(Scene3D, InstanceIndex)
remove_scene_3d_instance(Scene3D, InstanceIndex)
remove_scene_3d_light(Scene3D, InstanceIndex)
clear_scene_3d(Scene3D)

回复

使用道具 举报

大神点评(1)

快速回复 返回列表 客服中心 搜索