내 게시물을 읽어 주셔서 감사합니다.OpenCV 프로그램 멀티 스레딩
opencv 응용 프로그램을 멀티 스레딩하는 데 문제가 있습니다. 여러분이 저를 도울 수 있기를 바랍니다.
더 많은 조사를 위해 비디오 시퀀스 중간에서 400 프레임 (jpeg로)을 저장하려고합니다.
나는 코드가 하나의 스레드로 잘 실행되지만 멀티 스레딩은 많은 문제를 일으키고 있기 때문에 모든 철학이 잘못되어 있는지 궁금합니다.
옵션 1 :
내가해야 할 일의 개략적 인 측면에서, 나는에 가장 좋은 것입니다 어떻게 든 동시에 하나의 비디오 파일에 액세스 (또는 사본을 만들?), 그 다음 비디오를 순환 개별 스레드 프레임 단위로 미리 설정된 한계 사이에있을 때 각 프레임을 저장합니까? 예 : 스레드 1은 프레임 50 ~ 100을 저장하고 스레드 2는 프레임 101 ~ 150을 저장합니다.
옵션 2 : 파일을 한 번 열고 프레임 단위로 순환 한 다음 개별 프레임을 일련의 고유 한 스레드로 전달하여 저장합니다 조작. 예 : 프레임 1은 저장을 위해 스레드 1로, 프레임 2는 저장을 위해 스레드 2에, 프레임 3은 스레드 1에, 프레임 4는 스레드 2에 등등.
옵션 3 : 다른 버퍼/스레드 배열은 위!
저는 Visual C++를 표준 라이브러리와 함께 사용하고 있습니다. 이에 대한 당신의 도움을 위해
많은 감사,
건배, 케이
우선 옵션 1을 시도해 볼 수 있습니다. 매우 합리적인 것 같습니다. 어떤 스레드도 데이터를 공유 할 필요가 없습니다. 이는 간단한 경우입니다 (실제로 옵션 2는 데이터를 공유 할 필요가 없음). 그러나 옵션 1은 더 효율적으로 보이지만 이제 조언은 "두 가지 옵션을 모두 시도해보고 어떤 것이 더 좋은지 확인하십시오."- 당신이 가지고있는 코어만큼 많은 스레드를 사용하십시오. OpenCV는 시작하려는 프레임 범위를 지정하는 방법을 원합니다. 함께 작업하므로 각 스레드가 프레임 0에서 시작하지 않아도됩니다. –
안녕하세요, Chris O, 회신 해 주셔서 감사합니다. 옵션 1은 내가 지금까지 해보려고 시도했지만 오류 때문에 오류가 발생했는지 궁금합니다. 스레드가 대개 같은 파일에 액세스 할 수 있습니까? 내가 가질 수있는 스레드 수를 어떻게 알 수 있습니까? –