DaewoongP / cerule-stream

Application Object detection using Neural Networks, Python and Open CV (with Raspberry pi)
1 stars 0 forks source link

[서버]라즈베리파이 카메라 센서 #18

Closed DaewoongP closed 6 years ago

DaewoongP commented 6 years ago

코덱과 해상도가 인식률에 미치는 정도를 파악하기 위함.

leejihown commented 6 years ago

ffmpeg로 h264 코덱으로 해상도 조절후 1분 촬영해서 저장후 보내기

safecorners commented 6 years ago

raspivid raw video 생성

raspivid -w 320 -h 240 -t 30000 -td 1000,1000 --raw raw -rf rgb -o foo

참조 #2 #3 #4

DaewoongP commented 6 years ago

raspberry pi cam

encoder > pi raw video encoder check

leejihown commented 6 years ago

https://github.com/HIFLY-CSM/HIFLY-Final https://ko.wikipedia.org/wiki/Huffyuv https://gigglehd.com/zbxe/13386196

leejihown commented 6 years ago

우선 rawvideo로 코덱하는것이 색상 옵션이 설정되지 않아서 처음 찍었을때 플래이 했을때 흑백 화면으로 거의 야간 화면 같은 화면이라 함들어서 색상 옵션을 했습니다. 색상 옵션 리스트 여기에 나왔있는것 처럼 처음 영상 촬영 후에 설정된 색상 옵션은 yuv420p 입니다. 그래서 -pix_fmt yuv422p 옵션을 줘서 어느 정도 색상이 나왔지만 조명과 같은 문제로 구분이 힘들었습니다. rawvideo에선 yuv444p 단계까지는 지원이 안되는 걸로 나왔습니다. 실행 명령어

ffmpeg -f video4linux2 -i /dev/video0 -c:v rawvideo -s 640x480 -pix_fmt yuv442p test2_640x480.avi 

활용해서 동영상 촬영 뒤에 해상도 변경 명령어

ffmpeg -i test2_640x480.avi -s 1280x720 test2_1280x720.avi

위 명령어를 사용해서 해상도 변경후 xvid 와 h263으로 코덱 변경을 합니다 단 코덱 변경후 h263은 지원하는 해상도 크기가 있기 때문에 그에 맞춰서 해상도 변경하고 변경하는 명령어에 h263을 설정하지않으면 다른 코덱으로 변경 되기 때문에 h263코덱도 같이 설졍해 줘야 합니다. 명령어는 내일 모두 올려드리겠습니다. 코덱 변경 명령어

ffmpeg -i test2_640x480.avi -c:v xvid test1_640x480.avi

대웅이가 올려준 코덱 비교표에 나와 있는 코덱 모두 실행해 봤지만 코덱인 존재하지 않아서 실패 했습니다. 필요하다면 빌드해서 하는 방법을 생각해 보고 이번 경우 조명 환경이 좋지 않아서 힘들었지만 조사에서 보면 압축을 거의 하지 않은 코덱은 영상파일의 크기가 커서 스트리밍 부분에서 시간이 걸리고 압축을 많이 하면 인코딩 부분에서 시간이 많이 걸립니다. 두가지를 적절히 고려해서 스트리밍 하면될거 같습니다.

*: huffyuv 코덱이 무손실 코덱으로 인코딩이 편할거 같아서 자료 찾는 중 찾았지만 색상 옵션은 필요 없었지만 처음 인코딩후 넘어가지 못해 계속 플레이어에서 처음 화면에 멈춘 상태였습니다. 참고 사항으로 시험 해 보았습니다.

safecorners commented 6 years ago
ffmpeg -i test2_640x480.avi -s 1280x720 test2_1280x720.avi
  1. 640x480 -> 1280x720으로 업샘플링을 하는 것보다 1280x720 -> 640x480으로 다운샘플링하는게 손실이 더 적을 것 같은데 맞나요?

  2. 업샘플링은 바이리니어2d 알고리즘을 사용할 것 같고 다운 샘플링은 maxpool 알고리즘을 사용할 것같은데 다운샘플링이 더 빠른 걸로 알고 있어요. 조사해보고 다음에 할 때는 더 빠른 걸로 사용해 주세요 :)

  3. 오브젝트 디텍션 모델이 분석을 할때 rgb 포맷을 사용 하므로, yuv 포맷으로 영상정보를 받으면 openCV에서 내부적으로 yuv포맷을 rgb포맷으로 바꿔야 합니다. 참조된 색상 변환 리스트를 보면 rgb를 지원하는 것으로 나오는데 어떤 방식으로 컬러포맷을 인코딩하는게 빠르게 되나요? RGB와 YUV 포맷

leejihown commented 6 years ago

http://stonerain.tistory.com/54 http://ianccani.tistory.com/entry/imgconvert-swsscale

safecorners commented 6 years ago
safecorners commented 6 years ago

ffmpeg 속도 향상

leejihown commented 6 years ago

h264 코덱에서 재생시 시간이 안나오는 오류 시 해결법

변환 파일 xxx.mp4 앞에 -report 입력 ex)

pi@root$ ffmpeg ~~ -report h264_1280x640.mp4
safecorners commented 6 years ago

ffmpeg 설치 및 간단한 명령어

라즈베리파이3B ffmpeg 하드웨어 가속

ffmpeg 하드웨어 가속화 플랫폼 별 정보

v4l2의 간단한 정의와 설치법

v4l2와 ffmpeg를 이용한 카메라 캡처

ffmpeg와 v4l2가 제대로 구동하는지 확인하였다면 아래 명령어로 동영상을 찍고 플레이어로 확인 ffmpeg -f v4l2 -framerate 30 -video_size 640x480 -i /dev/video0 output.mkv

오류 해결 방법 mmap : 디바이스 오류 해결방법