OpenCV에서 편집 한 동영상을 저장할 수 없어 이미 돌아 왔습니다.
음, 환경이지만
MAC OS X 10.14.4
파이썬 3.7.3
Opencv 3.4.2
PIL 5.4.1
하고 싶었던 일
프레젠테이션으로 캐니 엣지 처리를 한 동영상을 보여주고 싶어서 저장하고 싶었어요.
OpenCV를 사용하면 캐니 에지 처리를 매우 쉽게 할 수 있습니까?
out.write(frame)을 사용하여 동영상을 만들면
동영상이 258바이트는 있을 수 없네요. 원래 재생할 수 없고.
여러가지 조사했지만 이미 저장할 수 있으면 좋을까 다시 열었다
ffmpeg로 연속 이미지 생성
↓
PIL로 이미지 로드
↓
OpenCV에서 CannyEdge 처리
↓
PIL로 이미지 저장
↓
ffmpeg로 연속 이미지를 동영상으로 되돌리기
구체적인 절차
input.mp4에서 연속 이미지를 만듭니다.
ffmpeg -i input.mp4 -vcodec png image_%03d.png
연속 이미지
image_001.png
image_002.png
...
image_125.png
이런 식으로 할 수 있습니다.
이 연속 이미지를 OpenCV에서 편집하는 것이지만 저장 부분을 사용할 수 없었기 때문에
PIL을 이용하여 이미지를 저장합니다.
코드는 다음
CannyEdge.pyimport numpy as np
from PIL import Image
import cv2
#img file
pic_start = 1
pic_finish = 125
for i in np.arange(pic_start,pic_finish+1):
#扱っている画像を表示
print("\r{:}".format(i),end = "")
#open image
im = Image.open("image_{:0=3}.png".format(i))
#OpenCVに渡すためにnumpyに変換
open_im = np.asarray(im)
#CannyEdge処理
edges = cv2.Canny(open_im, 100, 150)
#save image
pil_im = Image.fromarray(edges)
pil_im.save("image2_{:0=3}.png".format(i))
그리고 마지막으로 새로운 연속 이미지를 ffmpeg로 동영상으로 되돌립니다.
ffmpeg -r 30 -i image2_%03d.png -vcodec libx264 -pix_fmt yuv420p -r 30 out.mp4
이렇게하면 캐니 에지 처리 된 out.mp4를 저장할 수 있습니다.
OpenCV 편리하지만 가끔 ...
Reference
이 문제에 관하여(OpenCV에서 편집 한 동영상을 저장할 수 없어 이미 돌아 왔습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daikiclimate/items/04752fb0ccda4e46976e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ffmpeg로 연속 이미지 생성
↓
PIL로 이미지 로드
↓
OpenCV에서 CannyEdge 처리
↓
PIL로 이미지 저장
↓
ffmpeg로 연속 이미지를 동영상으로 되돌리기
구체적인 절차
input.mp4에서 연속 이미지를 만듭니다.
ffmpeg -i input.mp4 -vcodec png image_%03d.png
연속 이미지
image_001.png
image_002.png
...
image_125.png
이런 식으로 할 수 있습니다.
이 연속 이미지를 OpenCV에서 편집하는 것이지만 저장 부분을 사용할 수 없었기 때문에
PIL을 이용하여 이미지를 저장합니다.
코드는 다음
CannyEdge.pyimport numpy as np
from PIL import Image
import cv2
#img file
pic_start = 1
pic_finish = 125
for i in np.arange(pic_start,pic_finish+1):
#扱っている画像を表示
print("\r{:}".format(i),end = "")
#open image
im = Image.open("image_{:0=3}.png".format(i))
#OpenCVに渡すためにnumpyに変換
open_im = np.asarray(im)
#CannyEdge処理
edges = cv2.Canny(open_im, 100, 150)
#save image
pil_im = Image.fromarray(edges)
pil_im.save("image2_{:0=3}.png".format(i))
그리고 마지막으로 새로운 연속 이미지를 ffmpeg로 동영상으로 되돌립니다.
ffmpeg -r 30 -i image2_%03d.png -vcodec libx264 -pix_fmt yuv420p -r 30 out.mp4
이렇게하면 캐니 에지 처리 된 out.mp4를 저장할 수 있습니다.
OpenCV 편리하지만 가끔 ...
Reference
이 문제에 관하여(OpenCV에서 편집 한 동영상을 저장할 수 없어 이미 돌아 왔습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daikiclimate/items/04752fb0ccda4e46976e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ffmpeg -i input.mp4 -vcodec png image_%03d.png
import numpy as np
from PIL import Image
import cv2
#img file
pic_start = 1
pic_finish = 125
for i in np.arange(pic_start,pic_finish+1):
#扱っている画像を表示
print("\r{:}".format(i),end = "")
#open image
im = Image.open("image_{:0=3}.png".format(i))
#OpenCVに渡すためにnumpyに変換
open_im = np.asarray(im)
#CannyEdge処理
edges = cv2.Canny(open_im, 100, 150)
#save image
pil_im = Image.fromarray(edges)
pil_im.save("image2_{:0=3}.png".format(i))
ffmpeg -r 30 -i image2_%03d.png -vcodec libx264 -pix_fmt yuv420p -r 30 out.mp4
Reference
이 문제에 관하여(OpenCV에서 편집 한 동영상을 저장할 수 없어 이미 돌아 왔습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daikiclimate/items/04752fb0ccda4e46976e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)