문제

평범한 흰색 배경에있는 물체가 주어지면 OpenCV가 캡처 된 프레임에서 물체를 쉽게 감지 할 수있는 기능을 제공하는지 아는 사람이 있습니까?

객체 (사각형)의 코너/중앙 지점을 찾으려고합니다. 내가 현재하고있는 방식은 무자비한 힘 (물체의 이미지를 스캔)에 의한 것이며 정확하지 않습니다. 내가 알지 못하는 후드 아래에 기능이 있는지 궁금합니다.

세부 사항을 편집하십시오: 작은 소다 캔과 거의 같은 크기. 카메라는 물체 위에 위치하여 2D/사각형 느낌을줍니다. 카메라의 방향/각도는 무작위이며 코너 포인트에서 계산됩니다.

객체가있는 흰색 배경 일뿐입니다 (검은 색). 샷의 품질은 Logitech 웹캠에서 기대할 것으로 예상되는 것입니다.

코너 포인트를 얻으면 중심을 계산합니다. 그런 다음 중심 지점은 센티미터로 변환됩니다.

그것은 단지 '어떻게'내가 4 코너를 얻는 것이 내가 집중하려는 것입니다. 이 이미지로 내 무차별 인력 방법을 볼 수 있습니다. 영상

도움이 되었습니까?

해결책

이미 OpenCV에서 사각형 감지를 수행하는 방법에 대한 예가 있습니다 (샘플/squares.c를보십시오). 실제로 매우 간단합니다.

그들이 사용하는 거친 알고리즘은 다음과 같습니다.

0. rectangles <- {}
1. image <- load image
2. for every channel:
2.1  image_canny <- apply canny edge detector to this channel
2.2  for threshold in bunch_of_increasing_thresholds:
2.2.1   image_thresholds[threshold] <- apply threshold to this channel
2.3  for each contour found in {image_canny} U image_thresholds:
2.3.1   Approximate contour with polygons
2.3.2   if the approximation has four corners and the angles are close to 90 degrees.
2.3.2.1    rectangles <- rectangles U {contour}

그들이하는 일에 대한 정확한 음역은 아니지만 도움이 될 것입니다.

다른 팁

이것이 도움이되기를 바랍니다. 모멘트 방법을 사용하여 흑백 이미지의 중심을 얻습니다.

cv::Point getCentroid(cv::Mat img)
{
    cv::Point Coord;
    cv::Moments mm = cv::moments(img,false);
    double moment10 = mm.m10;
    double moment01 = mm.m01;
    double moment00 = mm.m00;
    Coord.x = int(moment10 / moment00);
    Coord.y = int(moment01 / moment00);
    return Coord;
}

OpenCV에는이를 달성하는 데 도움이되는 다양한 기능이 있습니다. 해당 언어로 프로그래밍하는 경우 라이브러리로 랩핑 한 C#.NET에 대해 emgu.cv를 다운로드하십시오.

원하는 것을 얻는 몇 가지 방법 :

  1. 이전과 같이 모서리 찾기 -Ag "CornerHarris"OpenCV 기능

  2. 이미지 임계 값 및 무게 중심을 계산합니다 - http://www.roborealm.com/help/center%20of%20gravity.php ... 이것은 내가 사용할 방법입니다. COG 루틴에서 임계 값을 수행 할 수도 있습니다. IE COG_X += *IMADEPTR <128? 255 : 0;

  3. 회전, 무게 중심 등을 제공 할 이미지의 순간을 찾으십시오. (나는 이것을 사용하지 않았다)

  4. (편집) Aforge.net 라이브러리에는 코너 감지 기능과 예제 프로젝트 (MotionDetector) 및 라이브러리가 웹캠에 연결할 수있는 라이브러리가 있습니다. Windows 및 .NET을 사용한다고 가정하면 이것이 가장 쉬운 방법이라고 생각합니다.

일반적으로 다른 기계 비전 라이브러리에서 Blob Analysis라고합니다. 나는 아직 OpenCV를 사용하지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top