halcon自定窗口控件

时间: 2023-08-16 18:02:27 浏览: 30
Halcon是一种功能强大的机器视觉软件,它提供了丰富的图像处理和分析功能。Halcon还提供了自定窗口控件的功能,使用户能够根据自己的需求定制窗口的样式和行为。 首先,Halcon提供了窗口控件的创建函数,如create_window,可以根据用户指定的参数来创建一个新的窗口。这些参数包括窗口的名称、大小、位置等。用户可以根据自己的需要来设置这些参数,以满足不同的应用场景。 其次,Halcon还提供了窗口控件的属性设置函数,如set_window_param。通过这些函数,用户可以设置窗口的各种属性,如背景颜色、字体颜色、字体大小等。用户可以根据自己的喜好或者应用需求来设置这些属性,以使窗口显示更加符合自己的要求。 此外,Halcon还支持窗口控件的事件响应函数,如on_button_click。通过这些函数,用户可以为窗口中的控件添加响应事件,比如点击事件。用户可以在事件响应函数中编写相应的代码来实现各种功能,比如显示特定的图像或者执行特定的算法。 最后,Halcon还提供了窗口控件的销毁函数,如close_window。当用户不再需要某个窗口时,可以使用这些函数来关闭该窗口,释放相关资源。 总之,Halcon提供了灵活而强大的自定窗口控件功能,使用户能够根据自己的需求来创建、设置和销毁窗口。这为用户提供了更好的用户界面体验,同时也使得Halcon在不同的应用场景中具有更广泛的适用性。
相关问题

halcon绑定qt窗口

要将Halcon与Qt集成,可以使用Halcon提供的HDevelopQt库。该库提供了一组类和函数,可用于将Halcon窗口嵌入到Qt应用程序中。 以下是一个简单的示例,演示如何将Halcon窗口绑定到Qt窗口: 1. 创建一个Qt窗口,并在该窗口中添加一个QWidget控件,用于容纳Halcon窗口。 2. 使用HDevelopQt库中的代码创建一个Halcon窗口,并将其绑定到QWidget控件中。 3. 在Qt窗口中添加一些控件,例如按钮或滑动条,以便可以与Halcon窗口交互。 下面是一个示例代码,演示如何将Halcon窗口绑定到Qt窗口: ```c++ #include <QtWidgets/QApplication> #include <QtWidgets/QMainWindow> #include <QtWidgets/QVBoxLayout> #include <QtCore/QDebug> #include <HalconCpp/HalconCpp.h> #include <HDevThread/HDevThread.h> #include <HDevelopQt/HTupleQt.h> #include <HDevelopQt/HDevEngineThread.h> #include <HDevelopQt/HalconWidget.h> int main(int argc, char **argv) { QApplication app(argc, argv); QMainWindow window; QWidget *centralWidget = new QWidget(&window); QVBoxLayout *layout = new QVBoxLayout(centralWidget); HalconCpp::HObject image; // Load an image from file HalconCpp::ReadImage(&image, "image.bmp"); // Create a Halcon widget HalconCpp::HTuple windowHandle; HalconCpp::HalconWidget halconWidget(centralWidget); // Bind the Halcon widget to the Qt widget bool success = halconWidget.Bind(&windowHandle); if(!success) { qDebug() << "Failed to bind Halcon widget!"; return -1; } // Display the image in the Halcon widget HalconCpp::SetWindowAttr("background_color", "black"); HalconCpp::HDevWindowStack::Push(halconWidget.GetHalconWindow()); HalconCpp::DispObj(image, halconWidget.GetHalconWindow()); HalconCpp::HDevWindowStack::SetActive(halconWidget.GetHalconWindow()); // Add some controls to the Qt window layout->addWidget(&halconWidget); window.setCentralWidget(centralWidget); window.show(); return app.exec(); } ``` 在这个示例中,我们首先创建了一个Qt窗口,并在其中添加了一个QWidget控件,然后创建了一个Halcon图像对象,并使用HalconWidget类创建了一个Halcon窗口。然后,我们将这个Halcon窗口与QWidget控件绑定,并在Halcon窗口中显示图像。最后,我们将Halcon窗口添加到Qt窗口中,并显示整个应用程序。 请注意,以上示例假定您已经熟悉了Qt和Halcon的基本概念。如果您对这些技术还不熟悉,请先学习它们的基础知识。

halcon自定义控件

Halcon可以通过HDevEngine创建自定义控件,步骤如下: 1. 创建一个继承自System.Windows.Forms.Control的类,例如: ``` public class HalconWindow : System.Windows.Forms.Control { private HWindowControl _hWindowControl; public HalconWindow() { _hWindowControl = new HWindowControl(); _hWindowControl.Dock = System.Windows.Forms.DockStyle.Fill; this.Controls.Add(_hWindowControl); } public HWindow HWindow { get { return _hWindowControl.HalconWindow; } } } ``` 2. 在Halcon程序中创建HDevEngine对象,并将自定义控件加载到HDevEngine中,例如: ``` HDevEngine hdev = new HDevEngine(); hdev.AddCommand("open_window", new OpenWindowCommand()); hdev.ExecuteString("open_window(\"halcon_window\", 0, 0, 640, 480, \"black\", \"\", \"\", out_win);"); ``` 其中,OpenWindowCommand类可以定义如下: ``` public class OpenWindowCommand : HDevCommand { public override void ExecuteImpl(HDevEngine hdev) { string name = hdev.GetInputString("Name"); int row1 = hdev.GetInputInt("Row1"); int col1 = hdev.GetInputInt("Column1"); int row2 = hdev.GetInputInt("Row2"); int col2 = hdev.GetInputInt("Column2"); string background = hdev.GetInputString("Background"); string title = hdev.GetInputString("Title"); string options = hdev.GetInputString("Options"); HalconWindow window = new HalconWindow(); window.Name = name; window.Location = new Point(col1, row1); window.Size = new Size(col2 - col1, row2 - row1); window.HWindow.SetWindowParam("background_color", background); window.HWindow.SetWindowParam("title", title); window.HWindow.SetWindowParam("graphics_stack_size", 1024 * 1024); window.HWindow.SetWindowParam("graphics_stack_trace", "true"); hdev.SetOutputObject("out_win", window); } } ``` 3. 在自定义控件的代码中,可以通过HalconWindow.HWindow属性获取到Halcon窗口对象,例如: ``` private void button1_Click(object sender, EventArgs e) { HalconWindow halconWindow = new HalconWindow(); HWindow hWindow = halconWindow.HWindow; hWindow.SetColor("red"); hWindow.DispLine(100, 100, 200, 200); } ``` 这样就可以在自定义控件中显示Halcon图像,并且可以使用Halcon的图像处理函数进行操作。

相关推荐

在使用Qt和Halcon进行图像处理时,可以通过在窗口上绘制ROI(兴趣区域)来选择特定区域进行分析和处理。 首先,需要在Qt的窗口中创建一个用于显示图像的QLabel控件。然后,通过Halcon的API函数,将图像从Halcon的数据类型转换为Qt能够显示的数据类型,并将其显示在QLabel控件上。 接下来,可以使用Qt的绘图功能来实现ROI的绘制。一种常用的方法是使用鼠标事件来捕捉用户的交互操作。通过重写QLabel控件的鼠标事件函数,可以监听鼠标按下、移动和释放的动作,并根据鼠标的位置在窗口上绘制ROI。 具体操作包括: 1. 在QLabel控件的构造函数中设置鼠标追踪功能,以便能够捕捉到鼠标移动的事件。 2. 重写QLabel控件的鼠标事件函数,例如mousePressEvent、mouseMoveEvent和mouseReleaseEvent函数。在这些函数中,根据鼠标的位置和操作来绘制ROI。 3. 定义一个ROI类,用于保存ROI的坐标和属性。每次鼠标操作(按下、移动和释放)时,更新ROI的坐标和属性,并在窗口上重绘ROI。 4. 根据应用的需求,可以使用不同的图形绘制API,例如Qt的绘图函数或Halcon的绘图函数,来绘制ROI。例如,可以使用Qt的QPainter对象在窗口上绘制矩形、圆形等形状。 5. 在窗口上绘制ROI后,可以通过ROI的坐标和属性,对选择的区域进行进一步的处理和分析。 通过上述步骤,我们可以在Qt和Halcon的结合中实现窗口绘制ROI的功能,以实现图像处理中对特定区域的选择和分析。
在Halcon控件中,你可以通过鼠标点击来选中区域。以下是一个示例代码: c++ HWindow hWnd; // Halcon窗口句柄 HObject image; // Halcon图像对象 HObject region; // 选中的区域对象 // 读取图像到image对象中 ReadImage(&image, "image.jpg"); // 显示图像到Halcon窗口 DispObj(image, hWnd); // 在Halcon窗口中等待用户的鼠标点击事件 Halcon::SetWindowAttr("background_color", "black"); // 设置窗口背景色 Halcon::SetDraw(hWnd, "margin"); // 显示边缘线 Halcon::SetColor(hWnd, "green"); // 设置绘制颜色 Halcon::SetLineWidth(hWnd, 1); // 设置绘制线宽 while (true) { HTuple button; HTuple row, col; HOperatorSet::WaitMouse(hWnd, &row, &col, &button); if (button == 1) { // 左键点击 ClearWindow(hWnd); // 清空窗口 DispObj(image, hWnd); // 重新显示图像 // 根据鼠标点击位置创建一个圆形区域 GenCircle(®ion, row, col, 50); // 在Halcon窗口中显示选中的区域 SetColor(hWnd, "red"); SetDraw(hWnd, "fill"); DispObj(region, hWnd); break; // 选中了区域后退出循环 } } // 其他后续处理... 在以上代码中,首先读取图像到 image 对象中,然后使用 DispObj 函数将图像显示到Halcon窗口。接着进入一个循环,通过 WaitMouse 函数等待用户的鼠标点击事件。当检测到左键点击时,清空窗口并重新显示图像,然后根据鼠标点击位置创建一个圆形区域,并在Halcon窗口中显示选中的区域。最后可以在代码中添加其他的后续处理逻辑。 请注意,以上示例代码是使用Halcon的C++接口编写的,你可能需要根据你使用的编程语言和Halcon版本进行适当的调整。
要在 C# 中实现 Halcon 窗口的橡皮擦功能,你可以使用 Halcon 的交互操作函数来实现。 首先,你需要为 Halcon 窗口添加鼠标事件处理程序,以便捕获鼠标移动和点击的事件。你可以使用 HMouse 的事件来实现此功能。 csharp // 引入 Halcon 的命名空间 using HalconDotNet; // 创建一个 HWindowControl 对象 HWindowControl hWindowControl = new HWindowControl(); // 在窗体中添加 HWindowControl 控件 this.Controls.Add(hWindowControl); // 激活 Halcon 窗口 HOperatorSet.OpenWindow(0, 0, hWindowControl.Width, hWindowControl.Height, hWindowControl.HalconID, "", "", out HTuple windowHandle); // 添加鼠标事件处理程序 hWindowControl.HMouseDown += HWindowControl_HMouseDown; hWindowControl.HMouseMove += HWindowControl_HMouseMove; hWindowControl.HMouseUp += HWindowControl_HMouseUp; // 鼠标按下事件处理程序 private void HWindowControl_HMouseDown(object sender, HMouseEventArgs e) { if (e.Button == MouseButtons.Left) { // 获取鼠标点击的位置 int row = e.Y; int column = e.X; // 在指定位置绘制橡皮擦 HOperatorSet.SetDraw(hWindowControl.HalconID, "margin"); HOperatorSet.SetColor(hWindowControl.HalconID, "white"); HOperatorSet.SetLineWidth(hWindowControl.HalconID, 10); HOperatorSet.DispCircle(hWindowControl.HalconID, row, column, 5); } } // 鼠标移动事件处理程序 private void HWindowControl_HMouseMove(object sender, HMouseEventArgs e) { if (e.Button == MouseButtons.Left) { // 获取鼠标当前位置 int row = e.Y; int column = e.X; // 在指定位置绘制橡皮擦 HOperatorSet.SetDraw(hWindowControl.HalconID, "margin"); HOperatorSet.SetColor(hWindowControl.HalconID, "white"); HOperatorSet.SetLineWidth(hWindowControl.HalconID, 10); HOperatorSet.DispCircle(hWindowControl.HalconID, row, column, 5); } } // 鼠标释放事件处理程序 private void HWindowControl_HMouseUp(object sender, HMouseEventArgs e) { // 清除橡皮擦绘制 HOperatorSet.ClearWindow(hWindowControl.HalconID); } 上述代码中,我们通过捕获鼠标的按下、移动和释放事件,在 Halcon 窗口中绘制橡皮擦。当鼠标按下时,在指定位置绘制一个白色的圆形,当鼠标移动时,根据当前位置继续绘制圆形,当鼠标释放时,清除窗口中的橡皮擦绘制。 希望以上代码能帮到你!如果还有其他问题,请继续提问。
要在Winform中使用Halcon,需要在项目中添加Halcon的引用。可以通过以下步骤实现: 1. 下载Halcon,并安装到本地计算机上。 2. 在Visual Studio中创建一个Winform项目。 3. 在解决方案资源管理器中,右键单击项目名称,选择“添加引用”。 4. 在“添加引用”对话框中,选择“浏览”,找到Halcon的安装目录,选择对应的Halcon库文件,如“hdeveng.dll”、“hxdisp.dll”、“hxlcd.dll”等,并确认添加。 5. 在Winform窗体中,添加Halcon控件。在Visual Studio工具箱中,右键单击,选择“项添加”,找到Halcon的安装目录下的“halcon_dotnet.dll”,添加到工具箱中。 6. 将Halcon控件拖放到Winform窗体中。 7. 通过编写代码调用Halcon的函数实现图像处理、分析等功能。 例如,以下是一个简单的Winform窗体,使用Halcon控件显示一张图像: csharp using HalconDotNet; namespace HalconWinform { public partial class Form1 : Form { HWindowControl hWinCtrl; HImage img; public Form1() { InitializeComponent(); hWinCtrl = new HWindowControl(); hWinCtrl.Dock = DockStyle.Fill; this.Controls.Add(hWinCtrl); img = new HImage("lena"); hWinCtrl.HalconWindow.DispImage(img); } } } 在上面的代码中,首先创建了一个Halcon窗口控件hWinCtrl,并将其添加到Winform窗体中。然后创建了一个Halcon图像对象img,并将其加载为名为"lena"的图片。最后通过调用Halcon窗口控件的DispImage方法,在窗口中显示该图像。
要在Halcon中实现文字居中,可以使用disp_message函数并设置Alignment参数为'center'。disp_message函数用于在窗口中显示文字信息。下面是实现文字居中的步骤: 1. 确保已经在代码中导入Halcon的库。 2. 使用set_display_font函数设置要显示的字体属性,例如字体大小和字体名称。可以根据需要选择合适的字体。 3. 使用disp_message函数来在窗口中显示文字信息。设置Alignment参数为'center'可以实现文字居中显示。其他参数如Message和Row等可以根据需要进行设置。 以下是一个示例代码,演示了如何在Halcon中实现文字居中显示: csharp HTuple hv_WindowHandle; HTuple hv_Message = "Hello, Halcon!"; HTuple hv_Row = 100; HTuple hv_Column = 100; HTuple hv_Font = "Arial"; HTuple hv_Size = 20; HTuple hv_Bold = "true"; HTuple hv_Slant = "true"; // 设置窗口句柄 HOperatorSet.SetWindowAttr("background_color", "black"); HOperatorSet.OpenWindow(0, 0, 640, 480, 0, "", "", out hv_WindowHandle); // 设置字体属性 HOperatorSet.SetDisplayFont(hv_WindowHandle, hv_Size, hv_Font, hv_Bold, hv_Slant); // 设置文字居中显示 HOperatorSet.SetTposition(hv_WindowHandle, hv_Row, hv_Column); HOperatorSet.SetColor(hv_WindowHandle, "white"); HOperatorSet.SetFont(hv_WindowHandle, hv_Font + "-" + hv_Size); HOperatorSet.WriteString(hv_WindowHandle, hv_Message); // 关闭窗口 HOperatorSet.CloseWindow(hv_WindowHandle); 以上代码将在一个指定的窗口中显示居中的文字信息。可以根据需要修改字体属性和文字内容。 是一个关于C# Halcon开发的功能介绍,它提供了使用hSmartWindowContro控件实现图像的拖拽、缩放,以及实时显示鼠标像素点坐标和灰度值信息的功能。 是关于Halcon中set_display_font函数的说明,它可以用来设置显示的字体属性,包括大小、粗体和斜体等。 希望以上信息对您有帮助。
根据引用\[1\]中的代码,可以看出在使用Halcon处理图像并显示在PictureBox上的过程中,可以通过以下步骤实现: 1. 首先,使用Halcon的ReadImage函数读取图像文件,将其存储在HObject类型的变量img中。 2. 使用Halcon的GetImageSize函数获取图像的宽度和高度,以便后续设置窗口大小。 3. 使用Halcon的OpenWindow函数打开一个窗口,并将其与PictureBox的句柄关联起来,以便在PictureBox上显示图像。可以通过设置窗口的大小和位置来控制图像在PictureBox中的显示效果。 4. 使用Halcon的DispObj函数将图像显示在窗口中。 5. 可以使用Halcon的DrawCircle和GenCircle函数实现交互操作,例如在图像上绘制圆。 根据引用\[2\]中的代码,可以看出在批量加载图像和创建Halcon窗口的过程中,可以通过以下步骤实现: 1. 使用Halcon的ReadImage函数读取多个图像文件,并将其存储在一个图像数组中。 2. 使用Halcon的OpenWindow函数打开一个窗口,并将其与PictureBox的句柄关联起来,以便在PictureBox上显示图像。 3. 可以根据需要使用Halcon的其他函数对图像进行处理和显示。 综上所述,根据引用中的代码,可以使用Halcon在PictureBox上显示和处理图像。具体的实现方式可以根据具体需求进行调整和扩展。 #### 引用[.reference_title] - *1* [halcon C# 使用pictureBox显示halcon图像](https://blog.csdn.net/huixingshao/article/details/79592669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C#_Halcon 实现对图像的处理](https://blog.csdn.net/xufengab/article/details/123849808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [使用PictureBox控件显示halcon图像并使图像适应窗口大小](https://blog.csdn.net/weixin_44490080/article/details/105497300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
### 回答1: Halcon F1帮助文档是针对Halcon软件的用户提供的一份详细手册。Halcon是一套非常强大的计算机视觉软件,它提供了丰富的图像处理和机器视觉算法库,可以用于各种领域的图像处理和分析。 Halcon F1帮助文档包含了Halcon软件系统中的各个模块、函数、参数等详细信息,可供用户查询和使用。通过F1帮助文档,用户可以迅速找到所需要的函数,并了解其使用方法和参数说明。同时,还可以通过该手册了解Halcon的编程语言和库的概念和基础知识,从而更好地理解和使用该软件。 此外,Halcon F1帮助文档还提供了丰富的示例代码,供用户学习和参考。这些示例代码包括图像处理、机器视觉、形状检测、匹配等,可以快速学习各种算法和技术的实现方法。 总之,Halcon F1帮助文档是Halcon软件用户不可或缺的一份文档资料,它可以帮助用户更好地使用和了解Halcon软件系统。 ### 回答2: Halcon F1是一种强大的机器视觉开发工具,提供了广泛的视觉算法和工具,以帮助用户进行图像处理和分析。Halcon F1的帮助文档提供了有关软件使用方法的详细信息和示例代码,帮助用户快速入门和掌握软件的使用技巧。 帮助文档中包含有关Halcon F1的软件功能、术语和概述的基础知识,以及有关如何使用控件、窗口、工具和编辑器等外观特性的详细描述。此外,还提供了大量代码示例,以便用户可以更好地理解软件使用方法和如何处理不同类型的图像。 另外,Halcon F1的帮助文档也包括对软件错误和异常的说明和解决方案,从而帮助用户更好地处理可能出现的问题并快速解决故障。 总之,Halcon F1的帮助文档是一个非常有价值的资源,它不仅可以帮助用户了解软件的基本知识,还可以提供实用的代码示例、故障解决方案等实用信息,真正帮助用户充分利用软件功能,快速完成任务。

最新推荐

基于单片机温度控制系统设计--大学毕业论文.doc

基于单片机温度控制系统设计--大学毕业论文.doc

"REGISTOR:SSD内部非结构化数据处理平台"

REGISTOR:SSD存储裴舒怡,杨静,杨青,罗德岛大学,深圳市大普微电子有限公司。公司本文介绍了一个用于在存储器内部进行规则表达的平台REGISTOR。Registor的主要思想是在存储大型数据集的存储中加速正则表达式(regex)搜索,消除I/O瓶颈问题。在闪存SSD内部设计并增强了一个用于regex搜索的特殊硬件引擎,该引擎在从NAND闪存到主机的数据传输期间动态处理数据为了使regex搜索的速度与现代SSD的内部总线速度相匹配,在Registor硬件中设计了一种深度流水线结构,该结构由文件语义提取器、匹配候选查找器、regex匹配单元(REMU)和结果组织器组成。此外,流水线的每个阶段使得可能使用最大等位性。为了使Registor易于被高级应用程序使用,我们在Linux中开发了一组API和库,允许Registor通过有效地将单独的数据块重组为文件来处理SSD中的文件Registor的工作原

如何使用Promise.all()方法?

Promise.all()方法可以将多个Promise实例包装成一个新的Promise实例,当所有的Promise实例都成功时,返回的是一个结果数组,当其中一个Promise实例失败时,返回的是该Promise实例的错误信息。使用Promise.all()方法可以方便地处理多个异步操作的结果。 以下是使用Promise.all()方法的示例代码: ```javascript const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = Promise.resolve(3)

android studio设置文档

android studio默认设置文档

海量3D模型的自适应传输

为了获得的目的图卢兹大学博士学位发布人:图卢兹国立理工学院(图卢兹INP)学科或专业:计算机与电信提交人和支持人:M. 托马斯·福吉奥尼2019年11月29日星期五标题:海量3D模型的自适应传输博士学校:图卢兹数学、计算机科学、电信(MITT)研究单位:图卢兹计算机科学研究所(IRIT)论文主任:M. 文森特·查维拉特M.阿克塞尔·卡里尔报告员:M. GWendal Simon,大西洋IMTSIDONIE CHRISTOPHE女士,国家地理研究所评审团成员:M. MAARTEN WIJNANTS,哈塞尔大学,校长M. AXEL CARLIER,图卢兹INP,成员M. GILLES GESQUIERE,里昂第二大学,成员Géraldine Morin女士,图卢兹INP,成员M. VINCENT CHARVILLAT,图卢兹INP,成员M. Wei Tsang Ooi,新加坡国立大学,研究员基于HTTP的动态自适应3D流媒体2019年11月29日星期五,图卢兹INP授予图卢兹大学博士学位,由ThomasForgione发表并答辩Gilles Gesquière�

MutableDenseMatrix' object has no attribute 'flatten'

根据提供的引用内容,可以看出这是一个关于Python中矩阵操作的问题。具体来说,'MutableDenseMatrix' object has no attribute 'flatten'的错误提示表明,矩阵对象没有名为'flatten'的属性。因此,我们需要使用其他方法来展平该矩阵对象。 以下是一种可能的解决方案: ```python # 导入必要的库 from sympy import Matrix # 创建一个矩阵对象 mat = Matrix([[1, 2], [3, 4]]) # 将矩阵对象转换为列表 mat_list = mat.tolist() # 将列表展平 flat

MySQL 75道面试题及答案.docx

MySQL 75道面试题及答案.docx

HAL多学科开放获取档案库的作用及代理重加密和认证委托的研究

0HAL编号:tel-038172580https://theses.hal.science/tel-038172580提交日期:2022年10月17日0HAL是一个多学科开放获取档案库,用于存储和传播科学研究文档,无论其是否发表。这些文档可以来自法国或国外的教育和研究机构,也可以来自公共或私人研究中心。0HAL多学科开放获取档案库旨在存储和传播法国或国外的教育和研究机构、公共或私人实验室发表或未发表的研究文档。0代理重加密和认证委托的贡献0Anass Sbai0引用此版本:0Anass Sbai. 代理重加密和认证委托的贡献. 离散数学[cs.DM]. 皮卡第朱尔大学, 2021. 法语. �NNT:2021AMIE0032�. �tel-03817258�0博士学位论文0专业“计算机科学”0提交给科技与健康学院博士学位学校0皮卡第朱尔大学0由0Anass SBAI0获得皮卡第朱尔大学博士学位0代理重加密和认证委托的贡献0于2021年7月5日,在评审人的意见后,面向考试委员会进行

已有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中

已有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中,可以使用二分查找的方法来提高查找效率。具体实现如下: ```python def insert_num(arr, num): left = 0 right = len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == num: arr.insert(mid, num) return arr elif arr[m

基于单片机的语音门铃设计毕业论文.doc

基于单片机的语音门铃设计毕业论文.doc