저는 현재 Python으로 작업 중이며 OpenCV의 비디오 캡쳐와 cv.imshow를 사용하여 비디오를 보여줍니다. 이 비디오에 오버레이를 넣으려고하므로 cv.line, cv.rectangle 등을 사용하여 그릴 수 있습니다. 프레임이 변경 될 때마다 그려진 이미지가 지워 지므로 오버레이를 넣으려는 경우 기대하고 있습니다. 이것의 위에 어떤 종류의 그것은 내가 지우지 않고 비디오에 여러 이미지를 그릴 수 있도록합니다. 어떤 충고? 미리 감사드립니다!비디오에 오버레이를 넣는 방법
0
A
답변
0
필요한 것은 2 개의 Mat 개체입니다. 하나는 카메라를 스트리밍 (예 : Mat_cam)하고 다른 하나는 오버레이 (Mat_overlay)를 유지하는 것입니다.
당신이 그것을, 메인 창에 끌어 Mat_overlay에 라인과 사각형 객체를 저장하고 다음 프레임이 수신되면
이 Mat_cam가 업데이트 될 예정이 스트리밍 비디오의 영향을받지 않습니다 있는지 확인하고
다음 비디오 프레임을 가지지 만, 'for'루프 반복마다 지워지거나 새로 고침되지 않으므로 Mat_overlay는 동일합니다. 가중치 추가를 사용하여 Mat_overlay 및 Mat_cam을 추가하면 원하는 결과를 얻을 수 있습니다.
0
귀하의 질문을 올바르게 이해했는지 확신 할 수 없습니다. 귀하의 질문에서 얻은 것은 Videocapture에서 스트리밍 된 프레임에 오버레이를 남기고 싶은 것입니다. 한 가지 간단한 해결책은 "Mat_cam" (카메라 스트리밍 변수)를 사용하여 프레임을 캡처하여 "Mat_cam"변수를 루프 할 때마다 변수가 해제되지 않도록합니다.
오류가 발생했습니다. 오류 : .. \ .. \ .. \ modules \ core \ src \ arithm.cpp : 1287 : error : (-209) 연산이 'array op array '(배열의 크기와 채널 수가 같은 경우),'array op scalar '도 아니고'cv :: arithm_op '함수에서'scalar op array '도 아닙니다. videoCapture 함수를 사용하고 있기 때문일 수 있습니다. 내 비디오를로드 하시겠습니까? – kylejohnson1995
아니요. 추가하려는 두 개의 Mat 객체는 크기와 채널 수가 동일해야합니다. 즉, 둘 다 3 개의 채널 이미지 여야합니다. –
다른 좋은 질문이 유감입니다. 그러나 내 비디오에 몇 개의 채널이 있는지 어떻게 알 수 있습니까? 복사 기능을 사용하려고했지만 videoCapture 기능을 사용하지 못하게했습니다. – kylejohnson1995