SLAM OpenCV的基本使用方法
这个程序演示OpenCV的基本图像操作图像读取、显示、像素遍历、复制、赋值等。程序运行后先显示这张图片按任意键(比如空格)之后修改左上角的像素为一个黑色小方块再次按任意键之后复制了之前的图片然后把黑色的小方块修改成了白色的小方块代码#include iostream #include chrono using namespace std; #include opencv2/core/core.hpp #include opencv2/highgui/highgui.hpp int main(int argc, char **argv) { // 读取argv[1]指定的图像 cv::Mat image; image cv::imread(argv[1]); //cv::imread函数读取指定路径下的图像 // 判断图像文件是否正确读取 if (image.data nullptr) { //数据不存在,可能是文件不存在 cerr 文件 argv[1] 不存在. endl; return 0; } // 文件顺利读取, 首先输出一些基本信息 cout 图像宽为 image.cols ,高为 image.rows ,通道数为 image.channels() endl; cv::imshow(image, image); // 用cv::imshow显示图像 cv::waitKey(0); // 暂停程序,等待一个按键输入 // 判断image的类型 if (image.type() ! CV_8UC1 image.type() ! CV_8UC3) { // 图像类型不符合要求 cout 请输入一张彩色图或灰度图. endl; return 0; } // 遍历图像, 请注意以下遍历方式亦可使用于随机像素访问 // 使用 std::chrono 来给算法计时 chrono::steady_clock::time_point t1 chrono::steady_clock::now(); for (size_t y 0; y image.rows; y) { // 用cv::Mat::ptr获得图像的行指针 unsigned char *row_ptr image.ptrunsigned char(y); // row_ptr是第y行的头指针 for (size_t x 0; x image.cols; x) { // 访问位于 x,y 处的像素 unsigned char *data_ptr row_ptr[x * image.channels()]; // data_ptr 指向待访问的像素数据 // 输出该像素的每个通道,如果是灰度图就只有一个通道 for (int c 0; c ! image.channels(); c) { unsigned char data data_ptr[c]; // data为I(x,y)第c个通道的值 } } } chrono::steady_clock::time_point t2 chrono::steady_clock::now(); chrono::durationdouble time_used chrono::duration_cast chrono::duration double (t2 - t1); cout 遍历图像用时 time_used.count() 秒。 endl; // 关于 cv::Mat 的拷贝 // 直接赋值并不会拷贝数据 cv::Mat image_another image; // 修改 image_another 会导致 image 发生变化 image_another(cv::Rect(0, 0, 100, 100)).setTo(0); // 将左上角100*100的块置零 cv::imshow(image, image); cv::waitKey(0); // 使用clone函数来拷贝数据 cv::Mat image_clone image.clone(); image_clone(cv::Rect(0, 0, 100, 100)).setTo(255); cv::imshow(image, image); cv::imshow(image_clone, image_clone); cv::waitKey(0); cv::destroyAllWindows(); return 0; }参考高翔《视觉SLAM十四讲》

相关新闻

YOLO11-SEG模型在钢水罐缺陷检测中的应用与优化

YOLO11-SEG模型在钢水罐缺陷检测中的应用与优化

1. 项目背景与核心挑战在钢铁冶炼行业,钢水罐作为高温液态金属的运输载体,其安全检测一直是生产流程中的关键环节。传统的人工目检方式存在效率低、危险性高、主观性强等问题。我们团队基于YOLO11-SEG模型开发的智能检测系统,实现了钢水罐表面…

2026/7/24 5:59:58 阅读更多 →
局域网加密共享软件:从SMB安全困局到轻量化替代方案

局域网加密共享软件:从SMB安全困局到轻量化替代方案

一、引言:文件共享的“安全-便利”悖论 在企业的日常运营中,文件共享是最高频的基础需求之一。然而,这一需求往往面临一个两难局面:共享了就不安全,安全了就没法共享。 Windows共享文件夹(SMB协议&#xff…

2026/7/24 5:59:58 阅读更多 →
工业AI平台如何破解制造业数据孤岛与经验传承难题

工业AI平台如何破解制造业数据孤岛与经验传承难题

1. 制造业数字化转型的痛点与机遇在长三角和珠三角的工厂车间里,每天都能看到这样的场景:老师傅拿着听音棒在设备间穿梭,仅凭异响就能判断故障位置;年轻技术员在五六个系统界面间反复切换,试图拼凑出完整的生产数据。这…

2026/7/24 5:59:58 阅读更多 →

最新新闻

自监督学习的语义理解困境与突破路径

自监督学习的语义理解困境与突破路径

1. 自监督学习的本质困境自监督学习(Self-Supervised Learning)近年来在计算机视觉、自然语言处理等领域取得了显著进展,但一个根本性问题始终困扰着研究者:为什么这些模型在预训练阶段看似掌握了丰富的特征表示,却常常…

2026/7/24 6:09:01 阅读更多 →
Python之面向对象- 类属性、类方法练习

Python之面向对象- 类属性、类方法练习

题目要求:创建一个TodoList类,表示家庭任务清单,包含以下内容: 类属性:total_tasks(所有待办事项的总数,初始值为0)、total_complete_tasks(所有已完成任务总数&#xff…

2026/7/24 6:09:01 阅读更多 →
C++实现模运算下矩阵求逆:算法原理与工程实践

C++实现模运算下矩阵求逆:算法原理与工程实践

1. 项目概述:当矩阵运算遇上模算术在密码学、编码理论乃至一些特定的图形学算法里,我们常常会遇到一个看似简单却暗藏玄机的问题:给定一个整数矩阵,如何在模运算的体系下求出它的逆矩阵?这不仅仅是“求逆”和“取模”两…

2026/7/24 6:09:01 阅读更多 →
C++26 Unicode工具库:彻底解决多语言环境下的程序崩溃问题

C++26 Unicode工具库:彻底解决多语言环境下的程序崩溃问题

1. 项目概述:多语言环境下的“幽灵”崩溃如果你是一名C开发者,尤其是从事系统软件、桌面应用或者需要处理全球用户输入的后台服务开发,那么下面这个场景你一定不陌生:软件在中文、日文或者阿拉伯文环境下运行得好好的,…

2026/7/24 6:09:01 阅读更多 →
【行业前沿】液冷时代已来:B200/Rubin Ultra 液冷 GPU 维修有哪些新挑战?

【行业前沿】液冷时代已来:B200/Rubin Ultra 液冷 GPU 维修有哪些新挑战?

1. 为什么液冷是必然?NVIDIA Rubin Ultra 平台功耗超 5kW/卡,8 卡服务器超 40kW风冷散热效率极限已至,液冷散热效率是风冷的 1000 倍PUE 可低至 1.1(超大规模数据中心标准)液冷不是"选择题",而是…

2026/7/24 6:09:01 阅读更多 →
股票数据AI处理SDK:量化交易的高效解决方案

股票数据AI处理SDK:量化交易的高效解决方案

1. 项目背景与核心价值 股票数据与AI的结合正在重塑金融科技领域的创新边界。传统量化交易策略往往依赖于人工设计的特征和规则,而现代AI方法能够直接从海量市场数据中挖掘潜在规律。stock-sdk-mcp正是为这个需求场景设计的桥梁工具,它解决了三个关键痛点…

2026/7/24 6:08:01 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻