Записать видео в распознанном крае

Я пытался записать определенную продолжительность видео в режиме обнаружения острых краев с веб-камеры.

  1. В коде нет ошибки, но я не смог получить видео с обнаруженным краем, так как видеопроигрыватель показывает «не удается отобразить файл».
    Код генерирует нормальное, читаемое видео, когда я не применял обнаружение края (дополнительные четыре строки в коде ниже)

  2. Я новичок в этом, поэтому мне нужен гид, если я делаю какую-то глупую ошибку. Если этот метод не работает, есть ли альтернативный способ, который может помочь?
    В конце я просто хочу обработать несколько последовательных изображений с обнаружением краев.

Код:

#include "stdafx.h"#include "opencv2/opencv.hpp"#include "opencv2/objdetect/objdetect.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <stdlib.h>
#include <time.h>
#include <iostream>

using namespace cv;
using namespace std;

int ex = 1734701162;
//Mat frame, edges;

string output = "C:/Users/Dell/Desktop/New folder/edges.mov";

int main(int argc, const char** argv)
{
VideoCapture cap(0);
int i_fps = 30;
time_t start = time(0);

// VideoWriter (const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
VideoWriter outputVideo(output, ex, i_fps, Size(640, 480), true);

if (!cap.isOpened()) {
cout << "Not opened" << endl; // check if it's succeeded
return -1;
}

while (1) {

Mat frame, gray, edges, draw;
cap >> frame;

//extra 4 lines added for edge detection
cvtColor(frame, gray, COLOR_BGR2GRAY);
//GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
Canny(gray, edges, 50, 150, 3);
outputVideo << edges;

//outputVideo << frame;
if (difftime(time(0), start) >= 10) break;
if (waitKey(30) >= 0) break;
}

outputVideo.release();
cap.release();

//return 0;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector