什么网站可以做兼职设计wordpress 添加目录权限
什么网站可以做兼职设计,wordpress 添加目录权限,网页版梦幻西游小试牛刀小夫子,北京商城开发基于Opencv C# 开发的直线卡尺工具源码#xff0c;可以求直线交点#xff0c;代码运行正常#xff0c;由实际运行项目中剥离#xff0c;含测试图片#xff0c;包含一个强大的视觉控件源码#xff0c;控件仿halcon,支持平移#xff0c;无损缩放#xff0c;显示各种自定义…基于Opencv C# 开发的直线卡尺工具源码可以求直线交点代码运行正常由实际运行项目中剥离含测试图片包含一个强大的视觉控件源码控件仿halcon,支持平移无损缩放显示各种自定义图形工具鼠标拖动简单方便。最近在项目中搞出了个基于 OpenCV C# 开发的直线卡尺工具现在把它剥离出来分享给大家。这工具不仅能求直线交点还带了个超强大的视觉控件源码运行稳稳的实测有效。先说说这个直线交点的求解功能。在代码里我们会用到一些基本的几何计算和 OpenCV 的相关方法。比如下面这段核心代码伪代码示例// 假设已经检测到两条直线用两个点来表示每条直线 Point line1Start new Point(10, 10); Point line1End new Point(100, 100); Point line2Start new Point(50, 10); Point line2End new Point(50, 150); // 计算直线交点的方法 Point IntersectPoint(Point l1s, Point l1e, Point l2s, Point l2e) { float a1 l1e.Y - l1s.Y; float b1 l1s.X - l1e.X; float c1 a1 * l1s.X b1 * l1s.Y; float a2 l2e.Y - l2s.Y; float b2 l2s.X - l2e.X; float c2 a2 * l2s.X b2 * l2s.Y; float determinant a1 * b2 - a2 * b1; if (determinant 0) { // 平行直线无交点 return Point.Empty; } else { int x (int)((b2 * c1 - b1 * c2) / determinant); int y (int)((a1 * c2 - a2 * c1) / determinant); return new Point(x, y); } } Point intersection IntersectPoint(line1Start, line1End, line2Start, line2End); if (intersection! Point.Empty) { Console.WriteLine($交点坐标: ({intersection.X}, {intersection.Y})); } else { Console.WriteLine(两条直线平行无交点); }在这段代码里我们先定义了两条直线的起止点。然后通过IntersectPoint方法来计算它们的交点。这里用到了线性代数的知识将直线方程转化为一般式ax by c通过求解方程组来得到交点坐标。如果行列式determinant为 0说明两条直线平行就不存在交点啦。再看看这个仿 Halcon 的视觉控件。它支持平移、无损缩放还能显示各种自定义图形工具鼠标拖动操作也非常方便。以下是一些简单的代码片段展示如何实现平移功能// 鼠标按下事件处理 private void visualControl_MouseDown(object sender, MouseEventArgs e) { if (e.Button MouseButtons.Left) { startPoint e.Location; isDragging true; } } // 鼠标移动事件处理 private void visualControl_MouseMove(object sender, MouseEventArgs e) { if (isDragging) { int dx e.X - startPoint.X; int dy e.Y - startPoint.Y; // 这里更新图像显示的位置假设图像有个位移变量 imageOffset imageOffset.X dx; imageOffset.Y dy; startPoint e.Location; // 重绘控件以显示新位置 visualControl.Invalidate(); } } // 鼠标释放事件处理 private void visualControl_MouseUp(object sender, MouseEventArgs e) { if (e.Button MouseButtons.Left) { isDragging false; } }在上面的代码中当鼠标左键按下时记录起始点并标记为拖动状态。鼠标移动过程中计算鼠标移动的偏移量并更新图像的显示位置最后重绘控件展示新位置。鼠标释放时取消拖动状态。这个工具还包含了测试图片方便大家上手测试和调试。总的来说无论是用于学习 OpenCV 在 C# 中的应用还是在实际项目中作为基础功能模块这个直线卡尺工具源码都非常实用。希望大家能喜欢并从中获得一些灵感。如果有什么问题或者改进建议欢迎在评论区留言交流~