OpenCV 물체 감지에 대한 정보를 읽거나 연구를 한 후에도 비디오 프레임에서 막대를 어떻게 감지 할 수 있을지 잘 모릅니다. 사용자가 주위를 움직여도 감지 할 수있는 가장 좋은 방법은 무엇입니까? 나는 막대기를 칼로 사용하고 그것에서 광선 검을 만든다. 내가 시작할 수있는 곳이라면 요? 감사!OpenCV 특정 물체 감지
답변
이것은 일반적으로 Hough 라인 변환이 될 것입니다. Hough 변환은 장면에서 직선 (또는 다른 등고선)을 찾도록 설계되었으며 OpenCV는 이러한 선을 매개 변수화하여 끝점 좌표를 얻을 수 있습니다. 그러나, 현명한 말은, 라이트 세이버 효과를하는 경우 멀리 갈 필요가 없습니다. 스틱 오렌지를 페인트하고 크로마 키를하십시오. Adobe Premiere, Final Cut Pro, Sony Vegas 등의 표준 기능. OpenCV 버전은 프레임을 HSV 색상 모드로 변환하고 원하는 색상 및 채도 영역에있는 그림의 영역을 분리합니다.
http://opencv.itseez.com/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html?highlight=hough
는 여기에 내가 예를 들어 쓴 오래된 루틴 :
이//Photoshop-style color range selection with hue and saturation parameters.
//Expects input image to be in Hue-Lightness-Saturation colorspace.
//Returns a binary mask image. Hue and saturation bounds expect values from 0 to 255.
IplImage* selectColorRange(IplImage *image, double lowerHueBound, double upperHueBound,
double lowerSaturationBound, double upperSaturationBound) {
cvSetImageCOI(image, 1); //select hue channel
IplImage* hue1 = cvCreateImage(cvSize(image->width, image->height), IPL_DEPTH_8U, 1);
cvCopy(image, hue1); //copy hue channel to hue1
cvFlip(hue1, hue1); //vertical-flip
IplImage* hue2 = cvCloneImage(hue1); //clone hue image
cvThreshold(hue1, hue1, lowerHueBound, 255, CV_THRESH_BINARY); //threshold lower bound
cvThreshold(hue2, hue2, upperHueBound, 255, CV_THRESH_BINARY_INV); //threshold inverse upper bound
cvAnd(hue1, hue2, hue1); //intersect the threshold pair, save into hue1
cvSetImageCOI(image, 3); //select saturation channel
IplImage* saturation1 = cvCreateImage(cvSize(image->width, image->height), IPL_DEPTH_8U, 1);
cvCopy(image, saturation1); //copy saturation channel to saturation1
cvFlip(saturation1, saturation1); //vertical-flip
IplImage* saturation2 = cvCloneImage(saturation1); //clone saturation image
cvThreshold(saturation1, saturation1, lowerSaturationBound, 255, CV_THRESH_BINARY); //threshold lower bound
cvThreshold(saturation2, saturation2, upperSaturationBound, 255, CV_THRESH_BINARY_INV); //threshold inverse upper bound
cvAnd(saturation1, saturation2, saturation1); //intersect the threshold pair, save into saturation1
cvAnd(saturation1, hue1, hue1); //intersect the matched hue and matched saturation regions
cvReleaseImage(&saturation1);
cvReleaseImage(&saturation2);
cvReleaseImage(&hue2);
return hue1;
}
약간 장황하지만 당신은 아이디어를 얻을!
OpenCV 용으로 작성된 얼굴 인식 (교육 & 감지) 기술을 따라 시작할 수 있습니다.
특정 단계를 찾고 있다면 알려주십시오.
음 ... 막대기를 추적하는 데 어느 정도 적용되는지 확실하지 않습니다. –
안녕 매트, 생각해 : 막대기, 일반적으로 원통형 물체로 상상. 3D 공간의 어느 위치 에나있을 수있는 실린더. 펜처럼 유사한 원통형 물체를 탐지하고 추적 할 수있는 경우가 있습니다! 다시 말하지만, 이러한 객체의 특징은 항상 탐지/추적을 개선하는 데 도움이됩니다. 따라서이 '스틱'의 고유 한 기능을 분류해야 할 수도 있습니다. 이러한 객체의 샘플 이미지 (부정 및 양수 모두)는 내 의견을 개선하는 데 확실히 도움이 될 것입니다. –
누군가, 스틱을 감지하기 위해 Hough 변환 코드를 추가했다고 생각합니다! 그러나 어떤 대상의 방향을 고려해야했습니다. 폐색은 다른 측면입니다. Lowe의 논문은 이런 점에서 도움이 될 수 있습니다. –
내 옛날 교수는 항상 컴퓨터 비전의 첫 번째 법칙은 이미지를 할 수있는 일을하는 것이 당신의 일을 더 쉽게하기위한 것이라고 말했습니다.
스틱의 모양을 제어 할 수 있다면 가장 특별한 행운의 그림을 그릴 수 있습니다. 네온 핑크 또는 배경에 표시되지 않을 가능성이있는 것입니다. 연결된 컴포넌트 레이블과 결합 된 색상 세분화. 그것은 매우 빠를 것입니다.
- 1. 물체 감지
- 2. opencv에서의 빠른 움직임과 물체 감지
- 3. AR app - 둥근 물체 감지
- 4. opencv 얼굴 감지
- 5. 모션 감지 opencv
- 6. 일반적으로 OpenCV 라인 감지
- 7. OpenCV 홈 붙이기 감지
- 8. 얼룩 감지 OpenCV
- 9. 안드로이드 opencv 눈 감지
- 10. OpenCV : 타일에서 움직임 감지
- 11. 비디오가있는 opencv 동그라미 감지
- 12. 매트 이미지에 저장된 객체 감지 opencv
- 13. 조명 조건이 바뀌면서 여러 개의 움직이는 물체 감지.
- 14. OpenCV Python 바인딩의 기능 감지
- 15. 추적 기능이있는 Opencv 모션 감지
- 16. OpenCV 개체 감지 - 센터 지점
- 17. OpenCV : cvHoughCircle을 사용한 원 감지
- 18. Arduino로 물체 감지하기
- 19. 저해상도 동영상에서 가장 좋은 물체 감지 방법은 무엇입니까?
- 20. OpenCV, 비 특정 텍스트
- 21. 회전하는 물체
- 22. 물체 감지기
- 23. 고해상도 이미지에 대한 Opencv 코너 감지
- 24. 안드로이드에서 OpenCv : 파일에서 이미지의 키포인트 감지
- 25. C++에서 OpenCV Canny Edge 감지
- 26. 밸리 감지 용 매끄러운 1D 히스토그램 (OpenCV)
- 27. iPhone 카메라에서 opencv 얼굴 감지 (실시간)
- 28. 주차장 선 및 ROI 감지 openCV
- 29. 특정 픽셀에서 직사각형을 그립니다. openCV
- 30. 특정 곡률의 가장자리 감지
내 스틱의 길이를 얻기 위해 blob 트래커를 사용해야합니까? 또는 나의 막대기의 출발점 그리고 종점을 얻는 다른 방법 있는가? 감사! – Caloyskie
바이너리 이미지의 'findContours'를 찾을 수 있습니다. 'contourArea'를 사용하여 가장 큰'contour'를 찾은 다음'minAreaRect'를 사용하여'contour' 주변의 경계 모양 인'RotatedRect'를 얻으십시오. 'RotatedRect'의 높이가 여러분의 스틱 길이가 될 것입니다. –
findContours를 사용했는데, 생성 된 사각형이 객체가 움직일 때 특히 안정적이지 않다고 생각합니다. 그런 다음 Hough Transform CV_HOUGH_PROBABILISTIC을 사용하여 작업을 수행했습니다. 고마워. – Caloyskie