C++ 版 Opencv4 通过迭代器访问Mat类矩阵中的元素错误

2023-11-11

错误说明

很多教程中的示例代码如下:

cv::Mat a(3, 4, CV_8UC3, cv::Scalar(1, 2, 3));
cv::MatIterator_<uchar> it2 = a.begin<uchar>();
cv::MatIterator_<uchar> it2_end = a.end<uchar>();
for (int i = 0; it2 != it2_end; it2++)
{
    std::cout << (int)(*it2);
    if ((++i % a.cols) == 0)
    {
        std::cout << std::endl;
    }
}

实际上执行结果并没有完成所有元素,所有通道的遍历显示
而是仅仅显示了每一个元素的第一通道的值

1111
1111
1111

正确方式

正确的迭代器使用应该如下:

cv::MatIterator_<cv::Vec3b> it = a.begin<cv::Vec3b>();
cv::MatIterator_<cv::Vec3b> it_end = a.end<cv::Vec3b>();
for (int i = 0; it != it_end; it++)
{
    std::cout << (cv::Vec3b)(*it);
    if ((++i % a.cols) == 0)
    {
        std::cout << std::endl;
    }
}

这样的输出才是完整的

[1, 2, 3][1, 2, 3][1, 2, 3][1, 2, 3]
[1, 2, 3][1, 2, 3][1, 2, 3][1, 2, 3]
[1, 2, 3][1, 2, 3][1, 2, 3][1, 2, 3]

这里3个通道作为一个整体输出,如果想要每一个通道值单独显示,需要再多加一层循环

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 版 Opencv4 通过迭代器访问Mat类矩阵中的元素错误 的相关文章

  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • BRISK 特征检测器检测零个关键点

    下面显示的 Brisk 探测器没有给我任何关键点 有人可以提出一个问题吗 我将尝试用一些代码解释我在下面所做的事情 include opencv2 features2d features2d hpp using namespace cv u
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网

随机推荐

  • 逆向爬虫26 各种加密逻辑

    逆向爬虫26 各种加密逻辑 一 什么是加密 加密就是输入一段得懂的东西 明文 通过一系列数学算法加工后 输出一段看不懂的东西 密文 二 为什么要加密 什么情况下需要加密 当我们想在网络上传输私密数据时 就需要用到加密 加密可以使数据变得更安
  • 从事研发管理的心得

    从事管理工作的心得 前言 职业生涯中 从技术走向管理似乎已成为普遍并达成共识的职业规划套路 但要完成这样的转变过程是需要一定的思考的 它肯定不会也不应该如同开关切换一样简单 因为在技术与管理之间肯定不是断崖 即使是也应该有一个安全可靠且宽阔
  • 芯片封装测试流程详解,一文带你了解清楚

    芯片封装是指芯片在框架或基板上布局 粘贴固定和连接 经过接线端后用塑封固定 形成立体结构的工艺 下面就带大家来了解一下芯片封装 什么是芯片 想要了解芯片封装测试 首先应该了解芯片 芯片其实是半导体元件产品的统称 很多时候我们把集成电路 In
  • [jQuery自定义插件] 2 自定义消息弹窗插件-jQueryToast

    用多了市面上的各种ui框架 各种的消息弹窗类型 我选择其中的一种 我觉得比较好看的 去模仿实现了 先上源码 再解释 目录结构 1 jQueryToast css ftoast position fixed top 0 width 351px
  • [Hive]一篇带你读懂Hive是什么

    作者简介 大家好 我是Philosophy7 让我们一起共同进步吧 个人主页 Philosophy7的csdn博客 系列专栏 哲学语录 承认自己的无知 乃是开启智慧的大门 如果觉得博主的文章还不错的话 请点赞 收藏 留言 支持一下博 gt
  • 组合优化问题求解算法思路的整理(VRP、SDVRP,container loading)

    一 技术背景与合作的必要性 解决合作问题现有的技术路线 挑战与不足 拟采用的技术路线 合作引进 这种技术的有益效果 缺 求解组合优化问题可以通过利用各种数学方法 寻找离散事件的最优编排 分组 次 序或筛选等 目前常用的优化算法可以分为以下四
  • 【LaTeX 教程】04. LaTeX 插入数学公式与符号

    LaTeX 教程 04 LaTeX 插入符号与数学公式 LaTeX 公式 我将把握最近文章里用到的数学公式格式都放上来供大家参考学习 首先 最简单的数学模式 xxx 一个 符号 中间的内容是行内模式 xxx 两个 符号 中间的内容是行间模式
  • 使用wxml2canvas将微信小程序页面转为图片

    最近有个微信小程序项目 需要将页面转为图片 微信小程序提供的Api是wx canvasToTempFilePath 这个方法是将画布指定区域的内容导出生成指定大小的图片 但是我们是将页面导出图片 所以可以使用wxml2canvas解决 1
  • WINRAR常用命令

    这段时间因为工作的需要 研究了一下关于WINRAR的操作 一下是关于它的一些常用命令 一 压缩命令1 将temp txt压缩为temp rarrar a temp rar temp txt 2 将当前目录下所有文件压缩到temp rarra
  • 编程器烧写NAND flash的一些说明

    注意事项 1 大小端模式 也即在使用编程器时需不需要做字节反序 2 Spare area处理方式 需要还是不需要 是否含有私有ECC算法 3 坏块处理方式 摘要一段说明如下 虽然针对西尔特SUPERPRO 9000U的文章 但也对许多其他的
  • ERROR: Failed to parse POMs org.apache.maven.project.ProjectBuildingException: Some problems were en

    问题 ERROR Failed to parse POMs org apache maven project ProjectBuildingException Some problems were encountered while pro
  • 数据分析毕业设计 全国疫情数据分析与3D可视化 - python 大数据

    文章目录 0 前言 1 课题背景 2 实现效果 3 设计原理 4 部分代码 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉学长自己做的项目系统达不
  • Java入门之二维向量定义及相加

    6 2 二维向量定义及相加 Java 10 分 裁判测试程序样例中展示的是一段二维向量类TDVector的定义以及二维向量求和的Java代码 其中缺失了部分代码 请补充完整 以保证测试程序正常运行 函数接口定义 提示 需要补充的成员方法有
  • 最优解算法的讨论

    不懂优化的人希望能有通用的方法来解决他手头的问题 但不幸的事没有这种方法存在 快速的方法都需要某些条件 比如常见的有强凸 线性 可分解啥的 目前研究的比较成熟的就是强凸光源可分解 非凸没有特别有效的方法来解 如果是强凸的 何必用那么复杂的方
  • python实战-读取xlsx表格批量替换文件名

    文章目录 一 前言 二 解决思路 三 具体代码实现 四 总结 一 前言 一位在校当老师的同学遇到了一个需求 学生1寸照片是以学生姓名命名 现在需要重命名1寸照片 重命名为exel里对应的学生姓名的身份证号码 我心想这个需求很容易实现 照片有
  • springboot初始化修改yml文件并加载

    package com lezu springboot config import org springframework core io ClassPathResource import org springframework core
  • Pytorch dataloader中的num_workers (选择最合适的num_workers值)

    num workers是Dataloader的概念 默认值是0 是告诉DataLoader实例要使用多少个子进程进行数据加载 和CPU有关 和GPU无关 如果num worker设为0 意味着每一轮迭代时 dataloader不再有自主加载
  • 使用fo-dicom读取Dicom文件的PixelData信息及像素信息(C# / fo-dicom)

    安装fo dicom 在vs中安装fo dicom 点击解决方案 右键选择管理解决方案的NuGet程序包 打开窗口后 在浏览框输入fo dicom进行搜索 然后选择fo dicom 勾选后点击安装即可 读取Dicom文件并获取PixelDa
  • 智能指针与句柄详解(一)

    前言 智能指针与引用计数详解 一 中提到实现智能指针有两种方法 一种是引用计数 另一种就是句柄类实现 什么是句柄类 句柄类是用来存储和管理基类指针 指针所指对象的类型可以变化 它既可以指向基类类型对象又可以指向派生类型对象 用户通过句柄类访
  • C++ 版 Opencv4 通过迭代器访问Mat类矩阵中的元素错误

    错误说明 很多教程中的示例代码如下 cv Mat a 3 4 CV 8UC3 cv Scalar 1 2 3 cv MatIterator