opencv显示窗口有显示xy和rgb

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv显示窗口有显示xy和rgb相关的知识,希望对你有一定的参考价值。

参考技术A Opencv显示RGB图像出现绿色竖线,且同时对应YUV图像也出现竖线,是因为 前后图像位数不同导致的内存拷贝错误,原16位像素数据现在需要两个8位像素来存储,使得图像在横向上隔一个数据出现一次

分别显示多个 OpenCV imshow() 窗口

【中文标题】分别显示多个 OpenCV imshow() 窗口【英文标题】:display multiple OpenCV imshow() windows separately 【发布时间】:2014-10-19 16:09:56 【问题描述】:

我有一个使用 opencv 库构建的 VS 控制台应用程序。我正在使用 opencv imshow 函数显示图像。问题是所有 imshow 窗口相互重叠,很难在它们之间切换。如何防止重叠并分别显示并在它们之间切换

【问题讨论】:

【参考方案1】:

以编程方式进行此操作的方法是调用resizeWindow() 来定义每个窗口的大小,并调用moveWindow() 将它们放置在屏幕中的特定位置。

void cv::resizeWindow(const string& winname, int width, int height)
void cv::moveWindow(const string& winname, int x, int y)

【讨论】:

【参考方案2】:

虽然这是一个较晚的回复,但您可能会发现在每次 imshow() 调用后调用 moveWindow() 很有用。这里给出了一个独立于语言的解决方案。

示例步骤:-

    调用 imshow("first image", img1)

    call moveWindow("first image", img1, 0, 0) //窗口的默认位置是 col,row == 0,0。所以,这条线是可选的。

    调用imshow("第二张图片", img2) 设置 firstImageWidth = img1 的宽度 set mySpacing = 40 //改变这个以增加/减少图像窗口之间的间隙。 调用moveWindow("第一张图片", img1, firstImageWidth + mySpacing , 0)

然后,添加这些行以防止输出窗口永远处于活动状态。

    set myTime = 7000 //以毫秒为单位。在这里,显示我们的图像窗口需要 7000 毫秒 == 7 秒。 调用waitKey(myTime) call waitKey(1) //这是个技巧。否则,窗口将无限期打开。

目前,我正在使用 Java SE8 和 OpenCV 4.2。上面的方法对我有用。 Screenshot of the above example in action. 这是显示部分的Java+OpenCV代码sn-p:

... //显示图像。使用 OpenCV HighGui 类方法。 String inputWindowName = "此窗口显示输入图像"; String outputWindowName = "此窗口显示输出图像";

HighGui displayWindow = new HighGui();

displayWindow.imshow(inputWindowName, img1);

displayWindow.imshow(outputWindowName, img2); displayWindow.moveWindow(outputWindowName, img1.cols()+40, 0);

displayWindow.waitKey(7000); displayWindow.waitKey(1);

【讨论】:

以上是关于opencv显示窗口有显示xy和rgb的主要内容,如果未能解决你的问题,请参考以下文章

分别显示多个 OpenCV imshow() 窗口

OpenCV:自动将窗口大小调整为显示的图像

opencv 如何显示汉字

OpenCv初学者学习笔记:图像视频的加载与显示

c ++ opencv在窗口上显示图像

如何清除openCV中的窗口内容