imshow is not working



我使用for循环读取300帧并将它们累加。我在里面输入了一个imshow命令来连续打印帧但是在for循环处理过程中它们不会被打印但是它以单个图像

的形式出现

下面是我的代码:

enter code here
#include<iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include<stdlib.h>
#include<stdio.h>
using namespace cv;
using namespace std;
int main()
{
  char k;
  int learningframes=300;
  VideoCapture cap(0);
  if(cap.isOpened()==0)
  {
    cout<<"ERROR";
    return -1;
  }
  //while(1)
  //{
  Mat frame;
  cap>>frame;
  Mat frameaccF,frameacc,framethr32,framehsv,framethr;
  frameaccF=Mat::zeros(frame.size(),CV_32FC1);
  for(int i=0;i<=learningframes;i++)
  {
    cap>>frame;
    imshow("nn",frame); 
    cvtColor(frame,framehsv,CV_BGR2HSV);
    inRange(framehsv,Scalar(0,30,0),Scalar(50,150,255),framethr);
    framethr.convertTo(framethr,CV_32F);

    accumulate(framethr,frameaccF);
  }
  frameaccF=frameaccF/300;
  frameaccF.convertTo(frameaccF,CV_8U);
  imshow("frame",frame);
  imshow("frameacc",frameaccF);
    waitKey(0);
  //if(k=='q')
  //break;
  //}
  return 0;
  }

您需要将waiKey()放入for循环

for(int i=0;i<=learningframes;i++)
  {
    cap>>frame;
    imshow("nn",frame); 
    cvtColor(frame,framehsv,CV_BGR2HSV);
    inRange(framehsv,Scalar(0,30,0),Scalar(50,150,255),framethr);
    framethr.convertTo(framethr,CV_32F);

    accumulate(framethr,frameaccF);
    waitKey(0);
  }

相关内容

  • 没有找到相关文章

最新更新