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)
|