Giriş
Video yakalamak için kullanılan sınıf VideoCapture. Şu dosya include edilir.
Kullanım
Yakalanan frame Mat sınıfına yazılır. Mat nesnesi imshow() ile bir pencerede gösterilir.
Örnek
Şöyle yaparız
Şöyle yaparız.
Örnek
Şöyle yaparız.
Eğer ikinci kamerayı açmak istersek şöyle yaparız.
İki kamerayı ayrı ayrı göstermek için şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Örnek
Belirtilen frame numarasına gitmek için şöyle yaparız.
Yakalanan frame büyüklüğünü atamak için şöyle yaparız.
Exposure değerini atamak için şöyle yaparız.
Video yakalamak için kullanılan sınıf VideoCapture. Şu dosya include edilir.
#include "opencv2/opencv.hpp"
Şu dosya da include edilebilir.#include <opencv/cxcore.hpp>
Java'daki kardeşi için VideoCapture Sınıfı yazısına bakınız.Kullanım
Yakalanan frame Mat sınıfına yazılır. Mat nesnesi imshow() ile bir pencerede gösterilir.
Örnek
Şöyle yaparız
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main() {
VideoCapture cam;
while (!cam.open(0))cerr << "failed to open cam" << endl;
namedWindow("test");
while (1) {
Mat img;
cam >> img;
imshow("test", img);
if (waitKey() == 27)break;
}
destroyWindow("test");
}
ÖrnekŞöyle yaparız.
Mat frame;
VideoCapture cap ("1.mov");
if (!cap.isOpened ())
cout << "Error when reading stream";
namedWindow ("Frame", 1);
for (;;)
{
cap >> frame;
if (frame.empty())
break;
imshow("Frame", frame);
if (waitKey(10) >= 0)
{
break;
}
}
Default CameraÖrnek
Şöyle yaparız.
VideoCapture capture (0); // open the default camera
ÖrnekEğer ikinci kamerayı açmak istersek şöyle yaparız.
VideoCapture capture (1);
Örnekİki kamerayı ayrı ayrı göstermek için şöyle yaparız.
namedWindow("OriginalL",0);
namedWindow("OriginalR",2);
VideoCapture captureL(0);
if (!captureL.isOpened()) cout << "L doesn't work" << endl;
VideoCapture captureR(1);
if (!captureR.isOpened()) cout << "R doesn't work" << endl;
for(;;)
{
captureL >> imageL;
captureR >> imageR;
imshow("OriginalL", imageL);
imshow("OriginalR", imageR);
if (waitKey(30)== 27)
break;
}
Constructor - File PathŞöyle yaparız.
// Open video file
VideoCapture video ("2.avi");
Şöyle yaparız.
cv::VideoCapture capture ("/home/shar/Desktop/op.mp4");
if (!capture.isOpened ())
return 0;
cv::Mat frame;
bool stop(false);
while(!stop){
if(!capture.read(frame))
break;
if(cv::waitKey(10)>=0)
stop=true;
}
Constructor - gstreamer
Şöyle yaparız. Sanırım OpenCV'nin gstreamer desteği ile derlenmesi gerekiyor.
Şöyle yaparız. FPS 30'dur
Şöyle yaparız
VideoCapture sınıfının read() metodu kullanılırŞöyle yaparız. Sanırım OpenCV'nin gstreamer desteği ile derlenmesi gerekiyor.
cv::VideoCapture capture("udpsrc uri=udp://224.3.0.11:5000 ! video/mpegts ! tsdemux
name=demux ! video/x-h264 ! queue ! decodebin ! glimagesink demux. ! audio/mpeg
! queue ! decodebin ! autoaudiosink");
Constructor - nvdiaŞöyle yaparız. FPS 30'dur
const char* cam = "nvcamerasrc sensor-id=0 ! video/x-raw(memory:NVMM), format=UYVY,
width=1280, height=720, framerate=30/1 ! nvvidconv flip-method=2 ! video/x-raw,
format=GRAY8, width=1280, height=720 ! appsink";
VideoCapture capture (cam);
Constructor - UrlŞöyle yaparız
cv::VideoCapture capture("rtsp://root:pass@192.168.0.90/...");
IP kamera için şöyle yaparız.
VideoCapture capture ("http://login:password@111.111.111.111/cgi-bin/snapshot.cgi");
get metodu
Örnek
Frame boyutu için şöyle yaparız.
Frame boyutu için şöyle yaparız.
cv::Size s = cv::Size((int) capture.get(CV_CAP_PROP_FRAME_WIDTH),
(int)capture.get(CV_CAP_PROP_FRAME_HEIGHT));
Örnek
ex ve FPS (frames per second) için şöyle yaparız.
Dosya oynatılırken hangi frame'de olduğumuzu anlamak için şöyle yaparız.
Toplam frame sayısını bulmak için şöyle yaparız.
"operator >>" işleminin başarılı olup olmadığını döner. Şöyle yaparız.
Şöyle yaparız.
ex ve FPS (frames per second) için şöyle yaparız.
int ex = capture.get (CV_CAP_PROP_FOURCC);
int fps = capture
.get (CV_CAP_PROP_FPS);
ÖrnekDosya oynatılırken hangi frame'de olduğumuzu anlamak için şöyle yaparız.
int frameNum = capture.get (CV_CAP_PROP_POS_FRAMES);
ÖrnekToplam frame sayısını bulmak için şöyle yaparız.
int frameCount = capture.get (CV_CAP_PROP_FRAME_COUNT)
grap metodu"operator >>" işleminin başarılı olup olmadığını döner. Şöyle yaparız.
Mat img;
cap >>img;
if (!capture.grab())
{
cout << "\n Cannot read the frame from video file" << endl;
break;
}
isOpened metodu
Şöyle yaparız.if( !capture.isOpened() )
{
...
}
operator >> metoduŞöyle yaparız.
Mat frame;
capture >> frame; // get a new frame from camera
read metodu - Frame OkumaMat frame;
if(cap.read(frame){...}
release metoduŞöyle yaparız.
capture.release ();
set metoduÖrnek
Belirtilen frame numarasına gitmek için şöyle yaparız.
int frameNum = ...;
capture.set (CV_CAP_PROP_POS_FRAMES, frameNum);
Sunuç boolean tipidir. Şöyle yaparız.bool success = capture.set(CV_CAP_PROP_POS_FRAMES, frameNum);
ÖrnekYakalanan frame büyüklüğünü atamak için şöyle yaparız.
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 360);
ÖrnekExposure değerini atamak için şöyle yaparız.
VideoCapture cap(0);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 4008);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 3700);
cap.set(CV_CAP_PROP_EXPOSURE, -2.5);
Hiç yorum yok:
Yorum Gönder