我的最终目的是计算图像中所有连接区域的矩。
问题:OpenCV 和 Matlab 中的区域存储方法不同。很明显,区域和轮廓的矩也不同。
因此,如果我想获得在 Matlab 中提取区域的结果:
test = imread('test.bmp');
l = bwlabel(test, 8);
有必要遵循代码(OpenCV):
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
Mat test = imread("..\\test.bmp", CV_LOAD_IMAGE_UNCHANGED);
findContours(test , contours, hierarchy, CV_RETR_CCOMP , CV_CHAIN_APPROX_NONE);
for ( int i = 0; i < contours.size(); i++ )
{
if (hierarchy[i][3] > -1)
continue;
Mat imProcessing = Mat::zeros(test .size(), test .type());
drawContours(imProcessing, contours, i, Scalar(255), CV_FILLED, 8, hierarchy, 1);
// now imProcessing contain connected region, not contour!
}
有没有更有效的方法?