#python code
import cv2
def camera_in():
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("Camera open failed!")
return
print("Frame width:", round(cap.get(cv2.CAP_PROP_FRAME_WIDTH)))
print("Frame height:", round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
while True:
ret, frame = cap.read()
if not ret:
break
inversed = cv2.bitwise_not(frame)
cv2.imshow("frame", frame)
cv2.imshow("inversed", inversed)
if cv2.waitKey(10) == 27: # ESC key
break
cap.release()
cv2.destroyAllWindows()
def video_in():
cap = cv2.VideoCapture("D:\\projects\\SampleCode\\006939-master\\ch04\\video\\stopwatch.avi")
if not cap.isOpened():
print("Video open failed!")
return
print("Frame width:", round(cap.get(cv2.CAP_PROP_FRAME_WIDTH)))
print("Frame height:", round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print("Frame count:", round(cap.get(cv2.CAP_PROP_FRAME_COUNT)))
fps = cap.get(cv2.CAP_PROP_FPS)
print("FPS:", fps)
delay = round(1000 / fps)
while True:
ret, frame = cap.read()
if not ret:
break
inversed = cv2.bitwise_not(frame)
cv2.imshow("frame", frame)
cv2.imshow("inversed", inversed)
if cv2.waitKey(delay) == 27: # ESC key
break
cap.release()
cv2.destroyAllWindows()
def camera_in_video_out():
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("Camera open failed!")
return
w = round(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
delay = round(1000 / fps)
outputVideo = cv2.VideoWriter("D:\\projects\\SampleCode\\006939-master\\ch04\\video\\output.avi", fourcc, fps, (w, h))
if not outputVideo.isOpened():
print("File open failed!")
return
while True:
ret, frame = cap.read()
if not ret:
break
inversed = cv2.bitwise_not(frame)
outputVideo.write(inversed)
cv2.imshow("frame", frame)
cv2.imshow("inversed", inversed)
if cv2.waitKey(delay) == 27:
break
cap.release()
outputVideo.release()
cv2.destroyAllWindows()
def main():
camera_in()
video_in()
camera_in_video_out()
if __name__ == "__main__":
main()
// C++ code
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
void camera_in();
void video_in();
void camera_in_video_out();
int main(void)
{
camera_in();
video_in();
camera_in_video_out();
return 0;
}
void camera_in()
{
VideoCapture cap(0);
if (!cap.isOpened()) {
cerr << "Camera open failed!" << endl;
return;
}
cout << "Frame width: " << cvRound(cap.get(CAP_PROP_FRAME_WIDTH)) << endl;
cout << "Frame height: " << cvRound(cap.get(CAP_PROP_FRAME_HEIGHT)) << endl;
Mat frame, inversed;
while (true) {
cap >> frame;
if (frame.empty())
break;
inversed = ~frame;
imshow("frame", frame);
imshow("inversed", inversed);
if (waitKey(10) == 27) // ESC key
break;
}
destroyAllWindows();
}
void video_in()
{
VideoCapture cap("stopwatch.avi");
if (!cap.isOpened()) {
cerr << "Video open failed!" << endl;
return;
}
cout << "Frame width: " << cvRound(cap.get(CAP_PROP_FRAME_WIDTH)) << endl;
cout << "Frame height: " << cvRound(cap.get(CAP_PROP_FRAME_HEIGHT)) << endl;
cout << "Frame count: " << cvRound(cap.get(CAP_PROP_FRAME_COUNT)) << endl;
double fps = cap.get(CAP_PROP_FPS);
cout << "FPS: " << fps << endl;
int delay = cvRound(1000 / fps);
Mat frame, inversed;
while (true) {
cap >> frame;
if (frame.empty())
break;
inversed = ~frame;
imshow("frame", frame);
imshow("inversed", inversed);
if (waitKey(delay) == 27) // ESC key
break;
}
destroyAllWindows();
}
void camera_in_video_out()
{
VideoCapture cap(0);
if (!cap.isOpened()) {
cerr << "Camera open failed!" << endl;
return;
}
int w = cvRound(cap.get(CAP_PROP_FRAME_WIDTH));
int h = cvRound(cap.get(CAP_PROP_FRAME_HEIGHT));
double fps = cap.get(CAP_PROP_FPS);
int fourcc = VideoWriter::fourcc('D', 'I', 'V', 'X');
int delay = cvRound(1000 / fps);
VideoWriter outputVideo("output.avi", fourcc, fps, Size(w, h));
if (!outputVideo.isOpened()) {
cout << "File open failed!" << endl;
return;
}
Mat frame, inversed;
while (true) {
cap >> frame;
if (frame.empty())
break;
inversed = ~frame;
outputVideo << inversed;
imshow("frame", frame);
imshow("inversed", inversed);
if (waitKey(delay) == 27)
break;
}
destroyAllWindows();
}
C++ Code 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 황선규 저
Frame width: 640
Frame height: 480
Frame width: 640
Frame height: 480
Frame count: 378
FPS: 30.0

'OpenCV' 카테고리의 다른 글
ch05 contrast (0) | 2024.05.19 |
---|---|
ch05 brightness (0) | 2024.05.19 |
ch04 utils (0) | 2024.05.19 |
ch04 trackbar (0) | 2024.05.19 |
ch04 trackbar (0) | 2024.05.19 |