终于解决了一个困扰多日的问题:模块句柄

本文介绍使用易语言处理模块句柄时遇到的进制转换问题,并提供解决方法。通过实例演示如何正确地从十进制转换为十六进制,确保句柄值正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前用易语言取模块句柄都是等于:4194304,而不是预期的400000,感觉很郁闷。

研究多日终于发现问题所在,这是因为进制转换问题。4194304是十进制,而400000是16进制。

所以代码应该如下:

.版本 2

.程序集 窗口程序集1

.子程序 __启动窗口_创建完毕

信息框 (到文本 (进制_十到十六 (进程_取模块句柄 ())), 0, )    //精易模块

----------------------------------------------------------------------------------

万挂作坊教程:模块与线程      载入DLL.e

.版本 2

.程序集 窗口程序集1
.程序集变量 模块句柄, 整数型

.子程序 __启动窗口_创建完毕

模块注册 ()

.子程序 _按钮1_被单击

模块句柄 = 载入DLL (编辑框1.内容)
编辑框2.内容 = “0x” + 十到十六 (模块句柄)

.子程序 _按钮3_被单击
.局部变量 函数入口, 整数型

函数入口 = 取函数入口 (模块句柄, 编辑框3.内容)
编辑框4.内容 = “0x” + 十到十六 (函数入口)

.子程序 _按钮4_被单击

释放DLL (模块句柄)

.子程序 _按钮2_被单击

模块句柄 = 取模块句柄 (编辑框1.内容)
编辑框2.内容 = “0x” + 十到十六 (模块句柄)

万挂作坊教程:模块与线程

http://files.cnblogs.com/wanghj-dz/%E8%BD%BD%E5%85%A5DLL.e.rar

转载于:https://www.cnblogs.com/wanghj-dz/archive/2011/06/09/2076262.html

### 实现人脸识别的流程 为了实现在 ROS 2 中使用 C++ 进行人脸识别的任务,可以采用 OpenCV 库来辅助完成图像处理工作。OpenCV 提供了多种预训练的人脸检测模型,能够有效地识别人脸区域并将其标记出来。 #### 准备工作 安装必要的依赖库: - 安装 ROS 2 和其开发工具链。 - 安装 OpenCV 及其贡献模块(contrib),因为某些高级功能可能不在默认版本中提供。 创建一个新的 ROS 2 工作空间,并设置好编译环境以便后续操作。 #### 编写节点程序 下面是一个简单的例子展示如何编写一个人脸识别节点[^1]: ```cpp #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/objdetect.hpp> // 导入ros头文件 #include "rclcpp/rclcpp.hpp" #include "sensor_msgs/msg/image.hpp" class FaceDetector : public rclcpp::Node { public: explicit FaceDetector() : Node("face_detector") { subscription_ = this->create_subscription<sensor_msgs::msg::Image>( "/camera/image_raw", 10, std::bind(&FaceDetector::image_callback, this, _1)); publisher_ = this->create_publisher<sensor_msgs::msg::Image>("faces_detected", 10); face_cascade_.load("/path/to/haarcascades/haarcascade_frontalface_default.xml"); } private: void image_callback(const sensor_msgs::msg::Image::SharedPtr msg) { cv_bridge::CvImagePtr cv_ptr; try { cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8); } catch (cv_bridge::Exception& e) { RCLCPP_ERROR(this->get_logger(), "cv_bridge exception: %s", e.what()); return; } // 转换成灰度图 cv::Mat gray_frame; cvtColor(cv_ptr->image, gray_frame, CV_BGR2GRAY); equalizeHist(gray_frame, gray_frame); // 执行人脸检测 std::vector<cv::Rect> faces; face_cascade_.detectMultiScale(gray_frame, faces, 1.1, 3, 0 | CV_HAAR_SCALE_IMAGE, cv::Size(30, 30)); for(size_t i=0;i<faces.size();i++) { rectangle(cv_ptr->image, faces[i], Scalar(255,0,0), 2, LINE_AA); } auto output_msg = *cv_bridge::CvImage(std_msgs::msg::Header(), "bgr8", cv_ptr->image).toImageMsg(); publisher_->publish(output_msg); } rclcpp::Subscription<sensor_msgs::msg::Image>::SharedPtr subscription_; rclcpp::Publisher<sensor_msgs::msg::Image>::SharedPtr publisher_; cv::CascadeClassifier face_cascade_; }; int main(int argc, char* argv[]) { rclcpp::init(argc, argv); rclcpp::spin(std::make_shared<FaceDetector>()); rclcpp::shutdown(); return 0; } ``` 这段代码展示了怎样订阅来自摄像头的主题 `/camera/image_raw` 并发布经过处理后的图片到 `faces_detected` 主题上。通过调用 OpenCV 的级联分类器函数来进行基本的人脸定位与绘制矩形框标注。 #### 后续优化建议 考虑到实际应用场景中的复杂性和多样性,上述方法只是一个基础框架。对于更精确的结果,还可以考虑引入深度学习技术如 Dlib 或者 TensorFlow Lite 来替代传统的 Haar 特征法;另外也可以探索形态学变换等手段进一步改善特征提取质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值