Python_源代码&目标代码/编译&解释/开发环境

文章介绍了源代码和目标代码的概念,源代码是人类可读的编程语言,而目标代码是计算机可执行的。接着讨论了编译和解释的过程,编译是预先把整个程序翻译成目标代码,而解释则是逐行转化并执行。在开发环境中,如使用IDLE轻量级编译器,可以利用快捷键进行高效编程,同时提到了通过慕课学习Python语言程序设计的课程。

源代码和目标代码

源代码:人类可读,是采用某种编程语言编写的计算机程序。

例如:re = 2;

目标代码:计算机可直接执行,除专门研究人员外人不可读。

例如:10010001


编译compile和解释interpret

编译:把整个程序的源代码一次性翻译成另外一种代码(目标代码),翻译后的代码等待被执行或优化等等,发生在运行之前。其产物是另一份代码。

解释:把整个程序的源代码逐条转换成目标代码并执行。无产物。

### cv_bridge 的作用 cv_bridge 是 ROS(机器人操作系统)中的一个关键桥梁包,用于在 ROS 图像消息(`sensor_msgs/Image`) OpenCV 图像格式之间进行转换。这一功能在图像处理、计算机视觉机器人感知任务中尤为重要。例如,通过 `cv_bridge::toCvCopy()` 函数可以将 ROS 图像消息转换为 OpenCV 可操作的 `cv::Mat` 格式,从而实现图像滤波、边缘检测、特征提取等操作[^3]。 ### cv_bridge 的编译步骤 在某些项目中,可能需要使用特定版本的 OpenCV(如 OpenCV 3.2),而默认通过 `apt` 安装的 cv_bridge 会链接到系统预装的 OpenCV 4.2 版本。为满足项目需求,需从源码编译 cv_bridge,并将其链接到目标 OpenCV 版本。 1. **获取 cv_bridge 源码** 从 GitHub 获取特定版本(如 1.15.0)的 cv_bridge 源代码,并将其放入 ROS 工作空间的 `src` 目录中。该版本通常与特定 ROS 发行版(如 Noetic)兼容。 2. **修改 CMakeLists.txt** 在 `CMakeLists.txt` 文件中,将 `find_package(OpenCV 4 REQUIRED)` 修改为 `find_package(OpenCV 3.2 REQUIRED)`,以确保编译时使用 OpenCV 3.2 版本进行链接[^2]。 3. **编译 cv_bridge** 使用 `catkin_make` 或 `catkin build` 命令进行编译编译完成后,cv_bridge 将链接到指定版本的 OpenCV,并生成相应的库文件可执行文件。 4. **设置环境变量** 在 `.bashrc` 或当前 shell 会话中执行 `source devel/setup.bash --extend`,以将新编译的 cv_bridge 包路径添加到 ROS 环境中,使其在 Python 或 C++ 程序中可用[^4]。 ### 示例代码:cv_bridge 图像转换 以下是一个使用 `cv_bridge` 将 ROS 图像消息转换为 OpenCV 图像格式的 C++ 示例: ```cpp #include <ros/ros.h> #include <sensor_msgs/Image.h> #include <cv_bridge/cv_bridge.h> #include <opencv2/opencv.hpp> void imageCallback(const sensor_msgs::ImageConstPtr& msg) { cv_bridge::CvImagePtr cv_ptr; try { // 将 ROS 图像消息转换为 OpenCV 图像 cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8); } catch (cv_bridge::Exception& e) { ROS_ERROR("cv_bridge exception: %s", e.what()); return; } // 使用 OpenCV 进行图像处理,例如显示图像 cv::imshow("Image window", cv_ptr->image); cv::waitKey(3); } int main(int argc, char** argv) { ros::init(argc, argv, "image_converter"); ros::NodeHandle nh; ros::Subscriber sub = nh.subscribe("camera/image", 1, imageCallback); ros::spin(); return 0; } ``` 上述代码展示了如何通过 `cv_bridge::toCvCopy()` 函数将图像消息转换为 OpenCV 图像,并使用 `cv::imshow()` 显示图像内容[^3]。 ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值