저는 5 초 정도마다 웹에 스냅 샷을 게시하는 카메라를 사용하고 있습니다. 카메라는 사람들의 라인을 모니터링하고 있습니다. 내 대본이 사람들의 줄이 얼마나 긴지 말해 줄 수 있기를 바랍니다.
처음에는을 사용하여이 작업을 수행 할 수 있다고 생각 BackgroundSubtractorMOG
했지만 이것은 단지 검은 색 이미지를 생성하는 것입니다. 여기에 비디오 캡처 대신 이미지를 사용하도록 수정 된 코드가 있습니다.
import numpy as np
import cv2
frame = cv2.imread('sample.jpg')
fgbg = cv2.BackgroundSubtractorMOG()
fgmask = fgbg.apply(frame)
cv2.imshow('frame', fgmask)
cv2.waitKey()
다음 으로 이미지에 대한 전경 추출을 살펴 보았지만 이것은 대화 형이며 사람들의 줄이 얼마나 긴지 알려주는 스크립트가 필요한 사용 사례에 적합하지 않습니다.
나는 opencv를 처음 접했기 때문에 어떤 도움이라도 대단히 감사합니다. 요청시 추가 세부 정보를 제공 할 수 있습니다.
나는 배경에서 사람들을 분리하는 방법을 찾으려고 노력하고 있기 때문에 전반적인 문제를 해결할 사람을 많이 찾고 있지 않습니다. 그러나 더 나은 해결책이 있다고 생각한다면 다른 방식으로 문제에 접근 할 수 있습니다.
편집 : 요청한 샘플 이미지는 다음과 같습니다.
나는 그것을 알아! @QED는 내가 거기에 도달하는 데 도움이되었습니다. 기본적으로 하나의 이미지로이 작업을 수행 할 수 없습니다. 알고리즘이 무엇이 다른지 (전경), 무엇이 같은지 (배경)를 알 수 있도록 비교하려면 최소 2 개의 프레임이 필요합니다. 그래서 저는 2 개의 프레임을 가져 와서 알고리즘을 "훈련"하기 위해 반복했습니다. 내 코드는 다음과 같습니다.
import numpy as np
import cv2
i = 1
while(1):
fgbg = cv2.BackgroundSubtractorMOG()
while(i < 3):
print 'img' + `i` + '.jpg'
frame = cv2.imread('img' + `i` + '.jpg')
fgmask = fgbg.apply(frame)
cv2.imshow('frame', fgmask)
i += 1
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cv2.destroyAllWindows()
그리고 여기에 2 개의 연속 이미지의 결과가 있습니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다