Menu

Friday, June 7, 2013

[OpenCV] วิธีเล่นวิดีโอจากไฟล์
[OpenCV] How to Play Video From File

  1. CvCapture* capture=cvCreateFileCapture("E:/Wildlife.wmv");
  2. IplImage* img;
  3. char c;

  4. double frame_width=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH );
  5. double frame_height=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT  );
  6. double fps=cvGetCaptureProperty(capture,CV_CAP_PROP_FPS  );
  7. printf("%f %f %f",frame_width, frame_height,fps);

  8. cvNamedWindow("test",1);
  9. img=cvQueryFrame(capture);
  10. while(img){
  11. cvShowImage("test",img);
  12. c=cvWaitKey(30);
  13. if(c==27)
  14. break;
  15. img=cvQueryFrame(capture);
  16. }
  17. cvReleaseCapture(&capture);

บรรทัดแรก, ประกาศ capture และตั้งค่าให้รับภาพจากไฟล์วีดิโอ
At line 1, capture is declared and initiated to file capture

บรรทัดที่ 2, ประกาศ img สำหรับเก็บภาพที่ได้จาก capture
At line 2, img is declared for store an image from capture

บรรทัดที่ 5-7, อ่านค่าคุณสมบัติของไฟล์วีดิโอ
At line 5-7, the capture properties are acquired

บรรทัดที่ 10, หน้าต่างชื่อ test จะถูกสร้างขึ้น
At line 10, the window named test will be created

บรรทัดที่ 11 และ 17, ภาพจาก capture ถูกดึงและจัดเก็บไว้ใน img โดยใช้ cvQueryFrame 
At line 11 and 17, the image is queried and stored in img by using cvQueryFrame 

หมายเหตุ: มีอีกสองฟังก์ชั่นสำหรับการดำเนินการดึงภาพจาก capture คือ  cvGrabFrame และ cvRetrieveFrame
Notice: There are cvGrabFrame and cvRetrieveFrame for this operation

สิ่งสำคัญ: ห้ามใช้ cvReleaseImage กับภาพที่ถูกดึงจาก capture
Important: Don't release the image from capture by using cvReleaseImage

บรรทัดที่ 13, แสดงภาพ img บนหน้าต่าง test
At line 13, img is shown on test window

บรรทัดที่ 14-16, สั่งให้รอการกดปุ่ม 30 มิลลิวินาที ถ้าปุ่มที่กดเป็นปุ่ม Esc (รหัสอักขระเป็น 27) ให้หยุดลูป
At line 14-16, it wait 30 millisecond for key pressing. If pressed key is Esc (ascii code equal to 27) then loop is stopped

บรรทัดที่ 19, ปลดปล่อยหน่วยความจำสำหรับ capture 
At line 19, capture is released

No comments:

Post a Comment