CvCapture
OpenCV의 CvCapture
객체에 대한 내용을 정리한다.
Attributes
속성 | 의미 | 비고 |
cv2.CAP_PROP_FRAME_WIDTH | 프레임의 너비 | - |
cv2.CAP_PROP_FRAME_HEIGHT | 프레임의 높이 | - |
cv2.CAP_PROP_FRAME_COUNT | 프레임의 총 개수 | - |
cv2.CAP_PROP_FPS | 프레임 속도 | - |
cv2.CAP_PROP_FOURCC | 코덱 코드 | - |
cv2.CAP_PROP_BRIGHTNESS | 이미지 밝기 | 카메라만 해당 |
cv2.CAP_PROP_CONTRAST | 이미지 대비 | 카메라만 해당 |
cv2.CAP_PROP_SATURATION | 이미지 채도 | 카메라만 해당 |
cv2.CAP_PROP_HUE | 이미지 색상 | 카메라만 해당 |
cv2.CAP_PROP_GAIN | 이미지 게인 | 카메라만 해당 |
cv2.CAP_PROP_EXPOSURE | 이미지 노출 | 카메라만 해당 |
cv2.CAP_PROP_POS_MSEC | 프레임 재생 시간 | ms 반환 |
cv2.CAP_PROP_POS_FRAMES | 현재 프레임 | 프레임의 총 개수 미만 |
cv2.CAP_PROP_POS_AVI_RATIO | 비디오 파일 상대 위치 | 0 = 시작, 1 = 끝 |
Camera example
#include <opencv/highgui.h>
int main()
{
char const * TITLE = "CAMERA";
cvNamedWindow(TITLE, 0);
cvResizeWindow(TITLE, 320, 240);
CvCapture * capture = cvCreateCameraCapture(0);
IplImage * frame = nullptr;
char keycode = 0;
while (true) {
// Get the camera frame.
frame = cvQueryFrame(capture);
if (!frame) {
break;
}
cvShowImage(TITLE, frame);
keycode = cvWaitKey(33);
// Check the ESC keycode.
if (keycode == 27) {
break;
}
}
cvReleaseCapture(&capture);
cvReleaseImage(&frame);
cvDestroyWindow(TITLE);
return 0;
}
주의사항!
위에서 cvQueryFrame
함수가 반환하는 IplImage는 절대로 Release해선 안된다. 해당 소스코드 코맨트는 아래와 같다.
/* Just a combination of cvGrabFrame and cvRetrieveFrame
!!!DO NOT RELEASE or MODIFY the retrieved frame!!! */
CVAPI(IplImage*) cvQueryFrame( CvCapture* capture );
또한 cvShowImage
이후 cvWaitKey();
를 사용하여 반드시 WAIT해야 화면이 출력된다.
End of file
capVideo.open("CarsDrivingUnderBridge.mp4");
if (!capVideo.isOpened()) {
std::cout << "error reading video file\n";
return 0;
}
if (capVideo.get(CV_CAP_PROP_FRAME_COUNT) < 2) {
std::cout << "error: video file must have at least two frames\n";
return 0;
}
if ((capVideo.get(CV_CAP_PROP_POS_FRAMES) + 1) < capVideo.get(CV_CAP_PROP_FRAME_COUNT)) {
capVideo.read(imgFrame2);
} else {
std::cout << "end of video\n";
}
See also
Favorite site
- Reading and Writing Images and Video
- 카메라 입력영상 AVI 저장
- AVI 동영상 재생
- 두번째 OpenCV 프로그램 -동영상-
- Get video FPS with VideoCapture