问题标签 [highgui]
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.
qt - OpenCV Windows - 在函数 displayOverlay 中编译库时不支持 QT
我收到以下错误:
如果我是通过 cmake 安装的,我想我只需要确保将WITH_QT
标志设置为并重新编译(如此处所WITH_QT=ON
引用),但如果我使用预构建的库安装怎么办?
java - OpenCV 3.4.0 Java API 中的 Highgui 类
我正在使用 Java 学习 OpenCV,我想创建一个从文件中读取图像并将其显示在屏幕上的应用程序。我在 Stackoverflow 上看到很少有线程说 OpenCV 3.x 中不存在 Highgui 类,但在我的情况下看起来这个类已实现。例如我可以使用这样的命令:
上面显示空窗口。但是我仍然无法在此窗口中显示任何图像。当我运行时:
我收到一个错误:
错误:(28、16)java:找不到符号符号:方法imshow(java.lang.String,org.opencv.core.Mat)位置:类org.opencv.highgui.Highgui
我的问题是:
- Highgui 又回到 OpenCV Java Api 中了吗?
- 如何使用 OpenCV Java 显示图像?
c++ - OpenCV:断言失败“ dst.data == widget->original_image->data.ptr in function 'cvImageWidgetSetImage'”
重要提示:我解决了这个问题。最后解决。
我想达到什么目标?使用 OpenCV 的cv::imshow方法 显示图像。(imshow 文档)
3x3 矩阵的图像是这样创建的:
显示我调用的图像imshow("mask", mask);
我的问题是什么? 就像我在标题中提到的那样,尝试显示图像时会引发异常。完整的错误信息:
我已经尝试了什么?
- 在互联网上寻找错误。也许其他人已经遇到过同样的问题。不。没有什么
- 将矩阵更改为仅包含正浮点值(0 到 1),以防出现负输入问题。初始化:
Mat mask(3, 3, CV_32F, new float[9]{0, 1, 0, 1, 0, 1, 0, 1, 0});
同样的错误 - 如果在我的其他代码期间发生更改,请在不同位置调用这两种方法。同样的错误
- 编写小型 OpenCV 程序来运行这两行代码。同样的错误
- 上述想法的各种组合。同样的错误
- 显示我从内存中读取的其他图像,而不是自己创建它们。工作得很好
- 通过
imwrite("mask.png", mask)
Looks like this保存图像。我知道的很小。我将值缩放到 0 到 255 的范围内,因为这是 png 需要的。工作得很好
围绕我损坏的行的完整代码:
仅供参考:最后一行抛出了同样的异常,这就是它被注释掉的原因。我用“面具”问这个问题,因为它更容易。
写完问题后,我有了另一个想法。
解决方案:我将CV_32F
类型矩阵转换为CV_8U
矩阵并将所有值缩放到 0 到 255 的范围内。这解决了问题。
这是我应该首先想到的。由于某种原因,我花了一个小时才意识到。以防万一其他人遇到同样的错误或精神障碍,我仍然在这里发布。
c++ - opencv 中的 cv::imshow 仅显示合成图像的一部分,但单独显示部分有效。为什么?
目标和问题
我正在尝试使用 OpenCV 3.4.1 动态处理视频文件,方法是抓取每一帧,转换为灰度,然后对其进行 Canny 边缘检测。为了显示图像(也可以即时显示),我创建了一个带有 3 个额外标题的 Mat 类,其宽度是原始帧的三倍。3 个额外的标题代表我想在合成中显示的图像,并位于合成的第 1、第 2 和第 3 个水平段。
然而,经过图像处理后,合成图像的显示并不像预期的那样:第一段(原始帧应该在的位置)是完全黑色的,而其他段(处理后的图像)显示良好。另一方面,如果我在单独的窗口中一个一个地显示 ROI,则所有图像看起来都很好。
这些是我试图克服这个问题的事情:
- 使用 .copyTo 将数据实际复制到适当的图像段中。结果是一样的。
- 我将 Canny 图像放入 compOrigPart ROI,它确实显示在第一段中,因此 ROI 的定义没有问题。
- 将合成定义为三通道图像
- 在循环中将其转换为灰度
- 将处理后的图像放入其中
- 转换回 BGR
- 把原件放进去。
这一次,整个复合材料都是黑色的,什么也没显示。
- 根据gameon67的建议,我也尝试创建一个namedWindow,但这也无济于事。
代码:
问题
- 为什么我不能在单个窗口中显示整个合成图像,而单独显示它们是可以的?
- 这些显示器有什么区别?数据显然在那里,如单独的窗口所证明的那样。
- 为什么只有原始框架行为异常?
qt - Mouse pointer style in Opencv window with QT
I have custom build opencv 4.0.1 with Cuda 9.2 and QT 5.9.6 for my project based on image processing. In the application there is a need of user input where the user clicks on some points of a picture which shown by opencv namedWindow function. The opencv function setMouseCallback works properly without any problem. But the cursor on the window is the default arrow shape and the user need some custom cursor shape like crosshair cursor.
I have already tried with Qcursor methods but none of them was working on the opencv 'namedWindow'.
opencv - 用于创建窗口的 OpenCV highgui 指定合成器后端(X11、Wayland、OpenGL)
我的系统使用 Xwayland,一个能够支持原生 X11 进程的 Wayland 后端。
我希望能够在一个使用“namedWindow”和“imshow”函数的简单应用程序上获得 X 转发支持。当我运行应用程序时,X 转发不像在 Qt 应用程序中那样工作。在 Qt 应用程序中,您可以指定要在哪个平台插件/合成器中创建图形。
但是,我似乎无法弄清楚 OpenCV 的窗口创建。我可以指定 OpenCV 在其窗口创建中使用 X11 后端、Wayland 后端、OpenGL 后端等吗?
非常感谢任何指针。