videoWriter์ ํ๋ ์ ์๋์ ๊ฒฝ์ฐ double / float๋ฅผ ํ์ฉํด์ผํ์ง๋ง ์์์ ๋ค์ ์ซ์๊ฐ 5๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๋๋ง ์๋ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ์๋ก ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค (์ : 25.5์ด์ง๋ง 25.4๋ฅผ ํต๊ณผํ๋ฉด 25๋ก ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค.)
๋ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์นด๋ฉ๋ผ์์ 50 ํ๋ ์ ๋น๋์ค๋ฅผ ๋ นํํ๊ณ ๋ นํ ๋ ๋น๋์ค์ ํ๋ ์ ์๋๋ฅผ ์ถ๋ ฅํ์ฌ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ ๊ฐ์ง ์์ ๋๋ค.
import cv2
fourcc = cv2.VideoWriter_fourcc(*'H264')
vw = cv2.VideoWriter()
vw.open('test2.avi', fourcc, 25.6, (640, 480))
camera = cv2.VideoCapture(0)
for f in range(50):
_, frame = camera.read()
vw.write(frame)
vw.release()
c = cv2.VideoCapture('test2.avi')
print(c.get(cv2.CAP_PROP_FPS))
์ถ๋ ฅ : 25.6
import cv2
fourcc = cv2.VideoWriter_fourcc(*'H264')
vw = cv2.VideoWriter()
vw.open('test2.avi', fourcc, 25.4, (640, 480))
camera = cv2.VideoCapture(0)
for f in range(50):
_, frame = camera.read()
vw.write(frame)
vw.release()
c = cv2.VideoCapture('test2.avi')
print(c.get(cv2.CAP_PROP_FPS))
์ถ๋ ฅ : 25.0
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ffmpeg ๋ํผ์๋ ํ๋ ์ ์๋ ๋ฐ์ฌ๋ฆผ์ ์์ ์คํ๊ฐ ์์ต๋๋ค.
https://github.com/opencv/opencv/blob/master/modules/videoio/src/cap_ffmpeg_impl.hpp#L1544 ๋ฐ https://github.com/opencv/opencv/blob ์์ ๋ ๊ฐ์ง ์ธ์คํด์ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ ์
while (fabs((double)frame_rate/frame_rate_base) - fps > 0.001){
ํ
while (fabs(((double)frame_rate/frame_rate_base) - fps) > 0.001){
fps=59.15
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๊ฒฝํ๊ธฐ ์ ์ frame_rate=59
๋ฐ frame_rate_base=1
๋ฅผ ํ๋ํ๊ณ frame_rate=5915
๋ฐ frame_rate_base=100
์์ต๋๋ค.
๋ํผ๊ฐ ํ์ฌ ๊ตฌ์ฑ ์์๋ก ๋ฏธ๋ฆฌ ๋น๋๋์ด ์๊ณ ํด๋น ๋ถ๋ถ์์ ๋น๋ ์ง์นจ์ด ๋ช ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ด ์ปดํจํฐ (Windows ๊ธฐ๋ฐ)์์ ์ด๊ฒ์ ํ ์คํธํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ด๊ฐ ์ด๋ฏธ PR์ ์์ฑํ์ง ์๋ ์ด์ ์ ๋๋ค. ๋์์ด ํ์ํ๋ฉด ๋ง์ํด์ฃผ์ธ์.
@WydD ์ข์ ์บ์น! 3.4 ๋ธ๋์น์ PR์ ์์ ๋กญ๊ฒ ์คํํ์ธ์. OpenCV CI์์ ํ ์คํธ๋ฉ๋๋ค.
@alalek ๋น ๋ฅธ ๋ต์ฅ์ ๋ณด๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. PR์ด ์์ฑ๋์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ffmpeg ๋ํผ์๋ ํ๋ ์ ์๋ ๋ฐ์ฌ๋ฆผ์ ์์ ์คํ๊ฐ ์์ต๋๋ค.
https://github.com/opencv/opencv/blob/master/modules/videoio/src/cap_ffmpeg_impl.hpp#L1544 ๋ฐ https://github.com/opencv/opencv/blob ์์ ๋ ๊ฐ์ง ์ธ์คํด์ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ ์
ํ
fps=59.15
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๊ฒฝํ๊ธฐ ์ ์frame_rate=59
๋ฐframe_rate_base=1
๋ฅผ ํ๋ํ๊ณframe_rate=5915
๋ฐframe_rate_base=100
์์ต๋๋ค.๋ํผ๊ฐ ํ์ฌ ๊ตฌ์ฑ ์์๋ก ๋ฏธ๋ฆฌ ๋น๋๋์ด ์๊ณ ํด๋น ๋ถ๋ถ์์ ๋น๋ ์ง์นจ์ด ๋ช ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ด ์ปดํจํฐ (Windows ๊ธฐ๋ฐ)์์ ์ด๊ฒ์ ํ ์คํธํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ด๊ฐ ์ด๋ฏธ PR์ ์์ฑํ์ง ์๋ ์ด์ ์ ๋๋ค. ๋์์ด ํ์ํ๋ฉด ๋ง์ํด์ฃผ์ธ์.