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

关于c++ - imshow不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30647195/

10-12 23:08