5

웹캠의 비디오 프레임에서 견고한 동작 감지 및 추적이 필요합니다. 배경은 항상 동일합니다. 가능하다면 그림자없이 대상의 위치를 ​​식별하는 것이 목표이지만 그림자를 제거하는 것은 그리 중요하지 않습니다. 나는 배경 빼기 및 thresholding에 대한 opencv 알고리즘을 시도했지만 배경으로 하나의 이미지에만 의존합니다. 배경이 약간 밝기 (또는 카메라 자동 초점)가 변경되면 알고리즘이 필요합니다. 밝기 또는 일부 그림자로 거의 변화하지 않습니다.추적 기능이있는 Opencv 모션 감지

답변

3

견실 한 추적 방법은 전 세계에서 개발되고있는 광범위한 연구 관심 분야의 일부입니다. 다음은 매우 흥미롭고 넓고 개방적 인 문제를 해결하는 열쇠입니다.

처음에는 밝기의 일정성을 가정합니다 (따라서 당신이 묻는 것은 달성하기가 어렵습니다). 예를 들어 :

  • 루카스 Kanade
  • 혼 SCHUNK

널리 추적하는 데 사용하지만 휘도 항상성지지되는 블록 일치.

그런 다음 다른 흥미로운 것들 ... meanshift 또는 camshift 추적,하지만 당신은 당신이 견고 필요에 맞게 특정 임계 값에 따라 계산 된 백 프로젝션을 사용할 수 있습니다 그러나 ... 따라야 할 투사를 필요로 할 수

나는 그것에 대해 나중에 게시 할 것이다 Julien,

3

OpenCV에서 thresholding을 시도 할 때 RGB (빨강, 녹색, 파랑) 또는 HSV (색조, 채도, 값) 색상 형식으로이 작업을 수행하고 있습니까? 개인적인 경험으로 볼 때, HSV 인코딩은 임계 값에 OpenCV를 사용하고 BLOB 위치를 식별하기 위해 cvBlobsLib와 함께 사용할 때 비디오 푸티 지의 색상이있는 객체를 추적하는 데 훨씬 우수합니다.

HSV는 HSV가 빛의 색상에서 여러 색상까지 여러 색상이 존재할 확률이 매우 높지만 색상 ("색조")을 감지하는 데 단 하나의 숫자 만 사용하면되므로 더 쉽습니다. 어두운 색조. (색상의 양과 밝기는 각각 "채도"및 "값"매개 변수에 의해 처리됩니다.

I의 임계 값 HSV 참조 화상 ('imgHSV')를 cvInRange()에서 OpenCV API를 호출하여 이진 (흑백) 화상 구하는 방법은 두 가지 상술 한 예에서

cvInRangeS(imgHSV, 
      cvScalar(104, 178, 70 ), 
      cvScalar(130, 240, 124), 
      imgThresh); 

을 cvScalar 매개 변수는 색상이 파란색 인 색상을 나타내는 HSV 값의 하한 및 상한입니다. 내 자신의 실험에서 나는 발생하는 색조/채도/lum 값의 종류를 추적하고 관찰하는 데 관심이있는 (들) 대상의 스크린 샷을 잡아서 적절한 최대/최소 값을 얻을 수있었습니다.

코드 샘플을 사용한 자세한 설명은 blog posting에서 확인할 수 있습니다.

1

애드리안은

http://www.pyimagesearch.com/2015/05/25/basic-motion-detection-and-tracking-with-python-and-opencv/ 내가 다음에 멋진 튜토리얼을 가지고 있으며, 나는 정적 이미지뿐만 아니라

frameDelta = cv2.absdiff(firstFrame, gray) 
thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)[1] 
thresh = cv2.dilate(thresh, None, iterations=2) 
(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, 
cv2.CHAIN_APPROX_SIMPLE) 

4 줄의 코드 찾기 운동 잘 행운을 사용 좋은 실험 테스트를 https://youtu.be/HJBOOZVefXA