循环并通过图像向量显示
loop and display through a vector of images
我正在使用openCV和c 。我正在做一个非常简单的程序。它的作用是在向量垫中拍摄3个图像,将这些图像转换为HSV,然后再次将原始图像的HSV存储在矢量中。我想显示所有获得的3个HSV图像。但是,当我的程序循环时,它仅显示向量中的最后一个HSV映像。这是我的代码:http://pastebin.com/z7fbrtxs。
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(){
vector<Mat> imgs;
Mat left=imread("left.jpg");
Mat front=imread("front.jpg");
Mat right=imread("right.jpg");
imgs.push_back(left);
imgs.push_back(front);
imgs.push_back(right);
vector<Mat> hsvs;
Mat left_hsv;
Mat front_hsv;
Mat right_hsv;
cvtColor(left,left_hsv,CV_BGR2HSV);
cvtColor(front,front_hsv,CV_BGR2HSV);
cvtColor(right,right_hsv,CV_BGR2HSV);
hsvs.push_back(left_hsv);
hsvs.push_back(front_hsv);
hsvs.push_back(right_hsv);
for(int i=0;i<3;i++){
imshow("hsv",hsvs[i]);
}
waitKey(0);
return 0;
}
这个
for(int i=0;i<3;i++){
imshow("hsv",hsvs[i]);
}
waitKey(0);
表示您在名为" HSV"的窗口中显示所有图像。显示最后一个后,您等待用户输入。因此,这些图像实际上全部显示在窗口中,按顺序显示,只是它们切换得如此之快,您永远不会看到它。将其更改为
for(int i=0;i<3;i++){
imshow("hsv",hsvs[i]);
waitKey(0);
}
你应该很好。此更改意味着每个图像将显示在" HSV"窗口中,然后等待您按下按钮,然后显示下一个图像。
您也可以通过将窗口重命名为" HSV1"," HSV2"等,一次显示多个窗口。
用途:
for(int i=0;i<3;i++){
imshow("hsv",hsvs[i]);
waitKey(0); //Note: wait for user input for every image
}
或在三个不同命名的窗口中显示它们。
由于没有提供坐标,我想所有图像均在同一默认位置(视口源)绘制,最后图像均在所有以前的图像上绘制。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 代码使用向量成功运行,但使用数组显示错误
- 如果不在窗口 10 中声明名为 openCV 的 openCV namedWindow,QT 图像显示将无法正常工作
- Qt-png图像未显示在部署应用程序中
- Qt快速图像不显示
- 在原始图像中显示组件周围的矩形
- QPIXMAP图像未显示
- 如何使用CIMG.H库在另一个图像上显示一个图像
- 循环并通过图像向量显示
- SDL图像不显示
- 位图图像未显示在CListCtrl报告视图中
- 在OpenCV垫图像中显示Vec3b像素值
- c++套接字接收图像并显示而不保存
- 在devkit pro中,在图像上显示文本时,屏幕顶部出现垃圾
- Qt渲染图像并显示它
- QT资源文件-图像不显示时运行
- 从文件加载时图像不显示
- OpenCv图像没有显示
- QT背景图像不显示使用样式表