OpenCV 在图像上运行 kmeans 算法

2024-01-25

我试图在 3 通道彩色图像上运行 kmeans,但每次我尝试运行该函数时,它似乎都会崩溃并出现以下错误:

OpenCV Error: Assertion failed (data.dims <= 2 && type == CV_32F && K > 0) in unknown function, file ..\..\..\OpenCV-2.3.0\modules\core\src\matrix.cpp, line 2271

我在下面的代码中添加了一些注释,以帮助指定传入的内容。非常感谢任何帮助。

// Load in an image
// Depth: 8, Channels: 3
IplImage* iplImage = cvLoadImage("C:/TestImages/rainbox_box.jpg");

// Create a matrix to the image
cv::Mat mImage = cv::Mat(iplImage);

// Create a single channel image to create our labels needed
IplImage* iplLabels = cvCreateImage(cvGetSize(iplImage), iplImage->depth, 1);

// Convert the image to grayscale
cvCvtColor(iplImage, iplLabels, CV_RGB2GRAY);

// Create the matrix for the labels
cv::Mat mLabels = cv::Mat(iplLabels);

// Create the labels
int rows = mLabels.total();
int cols = 1;
cv::Mat list(rows, cols, mLabels .type());
uchar* src;
uchar* dest = list.ptr(0);
for(int i=0; i<mLabels.size().height; i++) 
{
    src = mLabels.ptr(i);
    memcpy(dest, src, mLabels.step);
    dest += mLabels.step;
}
list.convertTo(list, CV_32F);

// Run the algorithm
cv::Mat labellist(list.size(), CV_8UC1);
cv::Mat centers(6, 1, mImage.type());
cv::TermCriteria termcrit(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0);
kmeans(mImage, 6, labellist, termcrit, 3, cv::KMEANS_PP_CENTERS, centers);

错误说明了一切: Assertion failed (data.dims <= 2 && type == CV_32F && K > 0)

这些规则非常容易理解,该函数仅在以下情况下才起作用:

  • mImage.depth() is CV_32F

  • if mImage.dims is <= 2

  • and if K > 0。在这种情况下,您定义K as 6.

从你对问题的表述来看,似乎是:

IplImage* iplImage = cvLoadImage("C:/TestImages/rainbox_box.jpg");` 

正在将图像加载为IPL_DEPTH_8U默认情况下,而不是IPL_DEPTH_32F。这意味着mImage也是IPL_DEPTH_8U,这就是您的代码不起作用的原因。

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

OpenCV 在图像上运行 kmeans 算法 的相关文章

  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 在字符串末尾增加整数

    我有一个很强的 芝加哥 伊利诺伊州 我想在它的末尾添加一个 所以它将是 芝加哥 伊利诺伊州 注意 它也可能是芝加哥 伊利诺伊州 10 我希望它去芝加哥 伊利诺伊州 11 所以我不能做 substr 有什么建议的解决方案吗 一个非常简单的问题
  • Python:pyswip 输出返回 Atom 和 Functor

    基于一些较旧的post https stackoverflow com questions 63890053 prolog define logical operator in prolog as placeholder for other
  • RabbitMQ Consumer总是直接关闭(C#)

    目前我正在学习如何使用 RabbitMQ 发送作品 但接收不起作用 这是我的代码 var factory new ConnectionFactory HostName hostName using var connection factor
  • 带有接口的instanceof [重复]

    这个问题在这里已经有答案了 如果我尝试将instanceof运算符与错误的类一起使用 我会收到编译错误 动物无法转换为字符串 但使用接口时我不会收到编译时错误 例如 在第 10 行中 我收到编译错误 因为 Animal 不是 String
  • React Native父子通信并返回值

    我是反应本机环境的初学者 我想了解本机反应中的亲子沟通 家长将一个数字传递给孩子 例如 家长将 2 传递给孩子 子级将有一个处理函数 将相同的数字乘以 2 次并将结果返回给父级 作为示例 2 2 并返回 父级将调用子函数并查看输出是否正确并
  • 如何修复我的生成器角度项目以便 grunt 测试有效?

    我正在学习本教程 http www sitepoint com kickstart your angularjs development with yeoman grunt and bower http www sitepoint com
  • Python 和 Pylance VS Code 扩展之间有什么区别?

    我刚刚从老朋友 Sublime 转向 VSCode 我真的很喜欢它的工作方式和它所具有的功能 我是一名 Python 开发新手 我发现了 VSCode 的两个流行的 python 扩展 Python 和 PyLance 我的问题是 Pyth
  • FileSystemWatcher OnChanged 事件需要重新加入 UI 线程

    如何在 FileSystemWatcher 中获取 OnChanged 事件 以便在 OnChanged 事件完成后调用 UI 线程上的方法 或者 只是为了了解知识 如何让 OnChanged 事件完全在 UI 线程上运行 如果你想File
  • Java HttpSession

    java servlet中的HttpSession是在之后才创建的吗 HttpSession s request getSession 在我的代码中我没有这样写 但是当我使用时if request getSession false null
  • Ufw 防火墙阻止 kubernetes(使用 calico)

    我正在尝试在我的服务器 Debian 10 上安装 kubernetes 集群 在我的服务器上 我使用 ufw 作为防火墙 在创建集群之前 我在 ufw 上允许了这些端口 179 tcp 4789 udp 5473 tcp 443 tcp
  • Apache的Mesos和Google的Kubernetes有什么区别

    Apache的Mesos和Google的Kubernetes到底有什么区别 据我了解 两者都是服务器集群管理软件 任何人都可以详细说明主要区别在哪里 什么时候会首选哪个框架 你为什么要使用Kubernetes 位于 Mesosphere 之
  • 设置已发布的 npm 项目的“根”

    我正在发布一个名为的 npm 包foo到 npm 注册表 我使用compile to js 语言编写了该包 为了理智起见 我将编译的输出放入dist 项目目录的文件夹 我的package json将入口点列出为dist entry js n
  • Azure Web Apps 是否在多个实例之间共享磁盘?

    根据大卫 埃博 David Ebbo 在Azure 运行时环境 https github com projectkudu kudu wiki Azure runtime environment file system本文中 当您启动 2 个
  • 为什么“du”的输出通常与“du -b”如此不同

    为什么输出是du通常与du b b是简写 apparent size block size 1 仅使用 apparent size大多数时候给我相同的结果 但是 block size 1似乎可以解决问题 我想知道输出是否正确 哪些数字是我想
  • docker compose 会自动创建端口映射吗?

    我在 Visual Studio 2019 中创建了一个简单的 asp net core 应用程序并添加了 docker 支持 Dockerfile dockerignore 和 docker compose 文件均已创建 在命令提示符中
  • 数据库设计:跟踪每个用户的大量属性。如此之多,我可能会用完列(行存储空间)

    对于我所关心的问题 我希望得到一些意见 我的数据库中有一个 User 表 其中包含您期望的基本内容 例如用户名 密码等 该应用程序要求我跟踪每个用户的大量属性 如此之多 我可能会用完列 行存储空间 我很想添加一个包含 UserID Prop
  • 无需显式定义要抓取的每个字段即可抓取数据

    我想抓取一页数据 使用 Python Scrapy 库 而不必定义页面上的每个单独字段 相反 我想使用动态生成字段id元素的名称作为字段名称 起初我认为最好的方法是建立一个收集所有数据的管道 并在收集完所有数据后将其输出 然后我意识到我需要
  • Erlang:使用 gen_tcp:controlling_process 避免竞争条件

    我正在按照以下顺序实现简单的 tcp 服务器 ok LS gen tcp listen Port active true reuseaddr true mode list ok Socket gen tcp accept LS Pid sp
  • 当区域性可变时,格式化不带年份的本地化日期

    我需要根据当前设置的区域性将日期显示在 M dd 或 dd M 中 在我们的应用程序中 我们明确设置基于配置的区域性 目前 我们使用以下方法格式化日期 string dateStringFormat Thread CurrentThread
  • OpenCV 在图像上运行 kmeans 算法

    我试图在 3 通道彩色图像上运行 kmeans 但每次我尝试运行该函数时 它似乎都会崩溃并出现以下错误 OpenCV Error Assertion failed data dims lt 2 type CV 32F K gt 0 in u