changh95 / blog_comments

0 stars 0 forks source link

20210625-multithread-image-buffer/ #13

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

효율적인 이미지 버퍼 구현 (C++17 멀티 쓰레드) | cv-learn

Thread기반 이미지 버퍼 구현

https://changh95.github.io/20210625-multithread-image-buffer/

Glagoon commented 2 years ago

안녕하세요 현재 실시간 영상처리 프로젝트를 진행중입니다. 제가 궁금한 점이 하나 있는데 만약 t1 trhead(실시간 영상 30fps)1/30초 마다 1장씩 이미지 처리를 해야하는데 t2 thread가 처리 속도가 느리다면 어떻게 되나요???

ghost commented 1 year ago

rgb2gray를 condition variable 등으로 묶어주면 더 효울적인 스레딩이 가능합니다.

hci-mkim commented 1 year ago

안녕하세요. 제가 고민하던 내용이라 너무 반갑네요 ㅎ 혹시 파이썬 기반으로 해결하려고 하는데 참고할 수 있는 내용이나 자료들이 있을까요?? c++은 경험이 없어서요

changh95 commented 1 year ago

@hci-mkim 안녕하세요, 답장이 늦어서 죄송합니다! (알림을 늦게 봤네요 😭 ) 파이썬에서도 threading 모듈을 사용하셔서 구현이 가능하실 것 같습니다.

쓰레드간 공유하는 메모리가 있기 때문에 multiprocessing 대신 threading 쪽으로 보시는게 좋을 것 같아요.


업데이트:

방금 좀 더 찾아봤는데, 파이썬은 GIL이 모든 thread들을 serialize 한다고 하네요. 그렇기 때문에 thread를 사용하셔도 속도 개선이 될 것 같지 않습니다.

multiprocessing은 메모리가 독립적으로 돌아간다고 알고 있어서, 이미지 버퍼와 같은 경우에는 메모리 복사가 일어나야 프로세스간 메모리 공유가 가능할 것 같습니다. 하지만 이미지와 같이 큰 객체들을 복사하는건 오래 걸릴테니, 지금 제 감으로는 아마 생각하시는 것 처럼 빠르게 돌아가지는 않을 거라고 생각이 됩니다.