C++中圆形区域中OpenCV对象的检测
我是opencv的新手,我需要在一个圆形区域中检测一个对象。我有一个图像,图像中有一个固定点 以点为圆心,我需要检测直径为d的圆中的物体。因此我认为首先我必须切割圆形部分并检测其中的物体。我如何才能做到这一点 伪代码:C++中圆形区域中OpenCV对象的检测,c++,c,image,opencv,image-processing,C++,C,Image,Opencv,Image Processing,我是opencv的新手,我需要在一个圆形区域中检测一个对象。我有一个图像,图像中有一个固定点 以点为圆心,我需要检测直径为d的圆中的物体。因此我认为首先我必须切割圆形部分并检测其中的物体。我如何才能做到这一点 伪代码: void detect_func() { IpImage im= cvLoadImage(my_image); Cut_The_Circular_Area(); Detect_Object(); } 我想这可能会帮助你,即使我不知道,我们不能像普通的矩形一
void detect_func() {
IpImage im= cvLoadImage(my_image);
Cut_The_Circular_Area();
Detect_Object();
}
我想这可能会帮助你,即使我不知道,我们不能像普通的矩形一样裁剪圆形ROI,所以我尝试了这个片段,它可能对你有用你可以使用圆形创建一个遮罩,并将源和遮罩一起复制到新图像。如果你的新手不使用不推荐的C,那就从C++开始,谢谢@harris我会的
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
}