Lonewolf
Lonewolf

Reputation: 66

imshow is not working

I used a for loop for reading 300 frames and for accumulating them.I gave an imshow command inside to print the frames continuously but they are not printed during the for loop is processing but it comes as a single image

Here's my code:

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;
  }

Upvotes: 0

Views: 496

Answers (1)

GPPK
GPPK

Reputation: 6666

You need to put the waiKey() inside the for loop

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);
  }

Upvotes: 2

Related Questions