imshow不起作用

时间:2015-06-04 14:51:47

标签: c++ opencv image-processing

我使用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;
  }

1 个答案:

答案 0 :(得分:2)

您需要将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);
  }