2014-02-25 121 views
1

我是opencv中的newbee,我需要檢測圓形區域中的對象。我有一個圖像,並且在圖像中有一個固定點。在C++中的圓形區域中的Opencv對象檢測

以點爲圓心,我需要在直徑爲d的圓中檢測物體。所以我首先必須切割圓形部分並檢測其中的物體。我該如何做到這一點?

僞代碼:

void detect_func() {  

IpImage im= cvLoadImage(my_image); 

Cut_The_Circular_Area(); 

Detect_Object(); 
} 
+1

您可以使用圓形創建一個蒙版,並將其與蒙版一起復制到新圖像。如果你的新手不使用已棄用的C,請使用C++ – Haris

+0

開始,謝謝@harris我會做 – barp

回答

0
Mat image = imwrite("lena.jpg"); 
Mat roi = cvCreateMat(image.rows,image.cols, CV_8UC1); 
Mat test = cvCreateMat(image.rows,image.cols, CV_8UC1); 
for(int i=0; i < res.cols; i++) 
    for(int j=0; j < res.rows; j++) 
     roi.at<uchar>(Point(i,j)) = 0; 
circle(roi, point, radius, 255, -1, 8, 0); 
image.copyTo(test,roi); 
for(int i=0; i < test.cols; i++) 
    for(int j=0; j < test.rows; j++) 
     if(test.at<uchar>(Point(i,j)) > 0) { 
      //Do your processing here 
     } 

我想這能幫助你,甚至我不知道的是,我們不能裁剪圓形ROI就像一個正常的矩形,所以我想這個片段中,它可能爲你工作