기본 콘텐츠로 건너뛰기

[Node.js] 실시간 웹캠 영상을 수신하기

 참고 - https://www.python2.net/questions-294111.htm 

https://iamawebdeveloper.tistory.com/102 (비디오 스크립팅/일시정지 등)

https://izy.codes/tensorflowjs-webcam-image-classification/ (실시간 웹캠 스트리밍)


파이썬

[Python] OpenCV, UDP를 이용해 Webcam 영상 데이터를 서버로 보내기

TCP 소켓을 사용하여 웹캠의 이미지를 송수신하는 서버/클라이언트 예제

Flask Opencv 웹캠에 의한 웹서버에서 안면인식 결과 비데오 파일 저장

Create a Video Conference Recorder using WebRTC, MediaDevices, and MediaRecorder.



0. 발단

 학교에서 하고 있는 프로젝트 중에 node.js(웹 프레임워크)로 실시간 웹캠 영상을 보내야 하는 문제가 있었다. 이를 해결하기 위해 구글링을 했으나 쉽게 답을 찾지 못했다.

그 이유는 다음과 같다.

먼저 영상을 처리하는 opencv는 c언어 기반이라 자바언어를 사용하는 웹에서 코드를 쓰려면 다른 방법을 찾아야 한다는 점. (주로 파이썬 코드다.)


그럼 다시 구글링을 하면서 해결법을 찾아보자.

NodeJS에서 ZMQ 비디오 스트림 수신

 여기서 ZMQ(zero mq)란 분산/동시성 애플리케이션에 사용하도록 개발된 고성능 비동기 메시징 라이브러리라고 한다. 뭔 말인지 모르겠다. 아무튼 이 게시글에서 Python 백엔드에서 ZeroMQ PUB/SUB 패턴을 통해 전송 된 비디오 (웹캠 비디오)를 받고 싶은 전자 앱을 작성하고 있습니다. 파이썬으로 올바르게 작동하는 서버가 있는데 파이썬 클라이언트 수신자로 테스트했습니다.

라는 질문을 올렸다. 웹캠 비디오...? 어쩐지 내 프로젝트와 비슷할 것 같다.

  1. import base64
  2. import cv2
  3. import zmq
  4. context = zmq.Context()
  5. footage_socket = context.socket(zmq.PUB)
  6. footage_socket.connect('tcp://localhost:5555')
  7. camera = cv2.VideoCapture(0)
  8. while True:
  9. _, frame = camera.read()
  10. frame = cv2.resize(frame, (640, 480))
  11. _, buffer = cv2.imencode('.jpg', frame)
  12. byte_buffer = base64.b64encode(buffer)
  13. footage_socket.send_multipart([b"video", byte_buffer])
  14.  



댓글

이 블로그의 인기 게시물

[OpenCV/Google Colab] 노트북 웹캠으로 얼굴인식하기

  [OpenCV/Google Colab] 노트북 웹캠으로 얼굴인식하기 우리 노트북에는 거의 웹캠이 달려있습니다. 안 달린 노트북이 드물 정도죠. 지금 진행중인 프로젝트가 노트북 웹캠을 활용하는 겁니다. 웹캠으로 사용자의 모션을 인식하는 것이죠. 모션인식하는 방법을 찾던 중에 간단하게 예습할 수 있는 것을 찾아보았습니다.  바로 웹캠으로 '얼굴'을 인식하는 것인데요, 아주 간단한 코드로 진행할 수 있습니다. Google Colab 실행하기 우선 구글 코랩은  줄여서 'Colab'이라고도 하는 Colaboratory를 사용하면 브라우저에서 Python을 작성하고 실행할 수 있습니다.  구성이 필요하지 않으며, GPU를 무료 접근 가능하고 간편한 공유가 가능하다는 장점이 있습니다. 간단하게 구글에서 colab만 검색해도 바로 나옵니다. 들어가자마자 이런 창이 뜹니다. 처음 접속하셨다면 'Welcome To Colaboratory'가 뜰겁니다. 간단한 소개와 튜토리얼이 적혀 있습니다. 저는 오른쪽 하단에 'NEW NOTEBOOK'을 누르고 새롭게 만들었습니다.