分别显示多个OpenCV imshow()窗口
display multiple OpenCV imshow() windows separately
我有一个使用opencv库构建的VS控制台应用程序。我正在使用opencv imshow功能显示图像。问题是所有的imshow窗口都重叠在一起,很难在它们之间切换。如何防止重叠并分别显示它们,并在它们之间切换
用程序实现这一点的方法是调用resizeWindow()
来定义每个窗口的大小,并调用moveWindow()
来将它们放置在屏幕中的特定位置。
void cv::resizeWindow(const string& winname, int width, int height)
void cv::moveWindow(const string& winname, int x, int y)
虽然这是一个延迟的回复,但您可能会发现在每次imshow()调用后调用moveWindow()是很有用的。这里给出了一个与语言无关的解决方案。
示例步骤:-
- 调用imshow("第一个图像",img1)
- callmoveWindow("第一个图像",img1,0,0)//窗口的默认位置在col,row==0,0。因此,这一行是可选的
- 调用imshow("第二个图像",img2)
- set firstImageWidth=img1的宽度
- 将mySpacing设置为40//更改此值以增大/减小图像窗口之间的间隙
- callmoveWindow("第一个图像",firstImageWidth+mySpacing,0)
然后,添加这些行以防止输出窗口永远处于活动状态。
- 设置myTime=7000//(以毫秒为单位)。这里,7000毫秒==7秒来显示我们的图像窗口
- 调用waitKey(myTime)
- 调用waitKey(1)//这是一个技巧。否则,窗口将无限期打开
目前,我正在使用带有OpenCV 4.2的Java SE8。以上方法对我有效。[上述示例的屏幕截图。][1][1] :https://i.stack.imgur.com/JaTI0.png
以下是显示部分的Java+OpenCV代码片段:
//显示图像。使用OpenCV HighGui类方法
字符串inputWindowName=";该窗口显示输入图像"
字符串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);
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- 分别显示多个OpenCV imshow()窗口
- 如何使用imshow在多个窗口中显示多个图像
- Opencv图像窗口/imshow