问题标签 [opencv-mat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
428 浏览

c++ - Qt - 在工作线程崩溃中将 cv::Mat 转换为 QImage

介绍

我想要的非常简单:我想通过主 ui 线程中的按钮开始读取二进制文件的过程,让单独的线程处理包括转换在内的处理QImage并将该图像返回到主 ui 线程它应该显示在标签中。

因此我使用 Qt 的信号/槽机制及其线程功能。

我已经有了一个单线程工作解决方案,但是当使用线程尝试时,它会在我不理解的完全任意步骤上崩溃,因为整个过程是完全封装的,而不是时间关键......


工作单线程解决方案:

TragVisMain是一个QMainWindow

按下按钮readBinSingle开始该过程:

这就像一个魅力,但当然 ui 被阻止了。


不工作的多线程解决方案

正如您将看到的代码与上面的代码基本相同,只是移动到另一个类DoCameraStuffTragVisMain因此,这是头文件中用于此目的的主要组件:

DoCameraStuff只是一个QObject

移动dcsworkerThreadand connecting 信号和槽发生在 的构造函数中TragVisMain

通过按下readBinSingle按钮开始图像处理:

该过程发生在DoCameraStuff::readBinaryAndShowBinPic

显示图像TragVisMain::setImage


问题

好吧,多线程尝试只是在不同步骤中使整个应用程序崩溃而没有任何消息。但老实说,我没有任何想法。对我来说,这个DoCameraStuff类是一个标准的工人类,在成员函数中做与时间无关的东西,没有任何关键关系。

我还检查了内部使用的某些函数是否不是线程安全的,但我在,和等效条件下DoCameraStuff::readBinaryAndShowBinPic找不到任何问题。<cstdio>cv::MatQImage

所以:

  1. 为什么多线程尝试会崩溃?
  2. 需要应用哪些更改,才能使线程中的进程不崩溃?

我总是感谢你的帮助。

0 投票
1 回答
2144 浏览

python - 在 C++ 中将图像数据从 python 传递到 cv::mat

我正在cv2.imread("abc.tiff",1)从我的 python 接口读取图像,我想将它传递给由 pybind11 绑定的 c++ 函数。C++ 函数需要 acv::Mat作为输入。

现在我了解到 python 将其转换为 NumPY ,一个 NxM 3D 数组

我发现数据高度、宽度、通道分别为 5504 8256 3。

任何帮助我如何找到解决方案。


同样,我需要将一个传递cv::Mat给 Python 接口

0 投票
2 回答
389 浏览

c++ - 对 OpenCV 图像表示感到困惑

我正在将图像加载到cv::Mat. 出于某种原因,当我打印每个像素数据时,颜色与实际图像像素不匹配。显然,图像上没有(28, 36, 255), (127, 127, 255)颜色。有人可以指出我的错误吗?这是代码和测试图像。

在此处输入图像描述

0 投票
1 回答
170 浏览

opencv - 如何创建具有单独 rgb 通道数据的 opencv 矩阵

假设我有三个 char 数组r[1024], g[1024], b[1024],其中包含一个图像的 rgb 数据。我怎么能用cv::Mat这些通道数据创建一个?

0 投票
0 回答
512 浏览

opencv - 使用 PyArray_SimpleNewFromData 将 mat 转换为 numpyarray 时出现分段错误

PyArray_SimpleNewFromData 中的奇怪分段错误

PyArray_SimpleNewFromData 中的分段错误

在尝试了上述两篇文章中的所有可能解决方案后,我发布了这个问题,但我仍然面临着细分。我的代码非常简单直接,但我不知道如何摆脱它。对此的任何解决方案都会有很大帮助。

我的代码是:

如果我尝试添加 import_array() 我会收到另一个错误,说明如下:

我的 Cmake 文件是:

0 投票
0 回答
234 浏览

c++ - 如何制作 cv::Mat_ 对象

我需要使用 OpenCV 库中的 cv::Mat_ 类来执行一些数据处理。

我有一个这样的结构类型

如果我尝试像这样创建一个 cv::Mat_ 对象,

我在 Visual Studio 中遇到错误,

'channel_type': 不是 'cv::DataType<_Tp>' 的成员

我已经尝试阅读文档并阅读有关相同错误的其他帖子,但它并没有解决我的问题。我是 C++ 新手。

有人可以帮助我吗?

0 投票
1 回答
168 浏览

c++ - cv::Max 中的错误?

要么我做错了什么,要么 cv::max 有问题。我以最明显的方式称呼它:

并得到:

目前在 OSX Mojave,AppleClang 10. OpenCV4.1.0。我很快就会尝试另一个设置。

0 投票
0 回答
62 浏览

image-processing - 从 python 调用 c++ 函数时出错

我是 Python 新手,我想在 Python 模块中调用 C++ 函数。在阅读了关于 ctype、cython、swig 等的信息后,我决定使用 boost: python 来调用两个简单的 c++ 函数。

我写了这个 c++ 函数:

这是我的python代码:

第一个函数 (hi) 可以正常工作,但是对于想要对图像进行一些预处理的第二个函数,它不起作用并显示此错误:

new_image = hello.read_image() TypeError: No to_python (by-value) converter found for C++ type: cv::Mat

谁能帮我解决这个问题?

0 投票
0 回答
59 浏览

c++ - 访问在 python 中使用 suprocess.check_output 调用的 c++ 代码的输出

我有一个适用于图像的 python 代码。出于一些性能原因,我决定使用一个 C++ 程序,它的函数没有任何输入参数,但它的输出是 cv::mat 格式的图像数据。

我想从我的 python 代码中访问这个输出数据。

我使用 subprocess.check_output 调用这个 c++ 代码。

如何从我的 python 代码访问图像数据?

这是我的python代码的一部分:

这是我的 C++ 代码:

我想在 main 函数中访问 new_image 数据。

当我运行我的 python 代码时,它完全运行,我看到这条消息:“这是一个简单的水印!”

但我不知道如何访问图像数据以在我的 python 代码中使用它来显示它。

有人有什么想法可以帮助我吗?

0 投票
1 回答
175 浏览

python - 我需要 zeroMQ c++11 <> Python multipart messages cvmat + string 的清晰示例

我可以使用 Python 发送和接收多部分消息,如下所示。可能是我的温柔触摸或注意力不集中,我无法以同样的方式进行工作 c++11 < > Python 消息传递。

也没有找到明确的例子。

我需要的:

我有 cv::Mat 和字符串信息。我想通过 zeromq 将它发送到 Python(或 c++11 没问题)。

我认为这对所有 ZeroMQ 用户都非常有用。

在 python 中,我可以发送和接收消息,如下所示:

server.py(部分):

client.py(部分):