저는 컴퓨터 과학 학생이고 웹캠 비디오 스트림을 ASCII 아트로 출력하는 프로젝트를 만들려고 합니다.
이를 위해 v4l2에서 이미지를 가져옵니다. 그런 다음 OpenCV를 사용하여 이미지를 디코딩합니다(이보다 더 쉬운 방법을 찾을 수 없습니다).
그런 다음 openCV 매트에서 데이터를 가져오고 새 버퍼의 이미지에서 ASCII 아트를 만듭니다. 그 후 v4l2의 버퍼에서 데이터를 전송하지만 obs에서 v4l2를 사용하여 입력을 루프백하면 출력이 정말 이상해집니다(그림 참조).
opencv를 사용하여 새 매트에 이미지를 출력해 보았는데, 이미지가 올바르게 출력되었습니다. 나는 정말로 무슨 일이 일어나고 있는지, 왜 일어나는지 이해하지 못합니다. 저도 OBS대신 디스코드를 사용해봤는데 출력이 완전 검은색이더군요...
어떤 도움이라도 대단히 감사하겠습니다. 미리 감사드립니다.
(내 코드는 모두 github를 통해 제공됩니다. 스택 오버플로가 아니기 때문에 게시해야 할지 모르겠습니다. 필요한 경우 알려주시면 링크를 추가하겠습니다)
답변1
이를 위해 v4l2에서 이미지를 가져옵니다. 그런 다음 OpenCV를 사용하여 이미지를 디코딩합니다(이보다 더 쉬운 방법을 찾을 수 없습니다).
당신은 그것을 사용할 수 있습니다libcaca
libcaca는 이미지를 컬러 ASCII 아트로 변환하는 소프트웨어 라이브러리입니다. 여기에는 라이브러리 자체는 물론 cacaview(터미널 에뮬레이터 내에서 작동하는 이미지 뷰어) 및 img2txt(이미지를 다른 텍스트 기반 형식으로 변환할 수 있음)를 포함한 여러 프로그램이 포함되어 있습니다.
예를 들어 웹캠이 있는 경우 /dev/video1
이 명령은 ASCII 아트로 완성된 라이브 피드를 표시합니다.
ffmpeg -i /dev/video1 -pix_fmt rgb24 -f caca -
그들의홈페이지라이브러리와 설정할 수 있는 매개변수에 대한 자세한 정보가 있습니다.