gpt4 book ai didi

opencv - 在 OpenCV 中标记图像

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:36 26 4
gpt4 key购买 nike

给定相同的二值输入图像(直到反转),是否可以保证以下所有函数返回的图像中的标签都一致?

这是否出现在文档中的任何地方?

最佳答案

如果您向 distanceTransform 传递一个关于 connectedComponentsconnectedComponentsWithStats 的二值图像反转,标签是以相同的方式计算并且将保持一致

我无法在文档中找到任何引用,但在所有情况下标签都将通过相同的算法 (connectedComponents_sub1) 计算。

connectedComponents[WithStats]

int cv::connectedComponents(InputArray _img, OutputArray _labels, int connectivity, int ltype){
const cv::Mat img = _img.getMat();
_labels.create(img.size(), CV_MAT_DEPTH(ltype));
cv::Mat labels = _labels.getMat();
connectedcomponents::NoOp sop;
if(ltype == CV_16U){
return connectedComponents_sub1(img, labels, connectivity, sop);
}else if(ltype == CV_32S){
return connectedComponents_sub1(img, labels, connectivity, sop);
}else{
CV_Error(CV_StsUnsupportedFormat, "the type of labels must be 16u or 32s");
return 0;
}
}


int cv::connectedComponentsWithStats(InputArray _img, OutputArray _labels, OutputArray statsv,
OutputArray centroids, int connectivity, int ltype)
{
const cv::Mat img = _img.getMat();
_labels.create(img.size(), CV_MAT_DEPTH(ltype));
cv::Mat labels = _labels.getMat();
connectedcomponents::CCStatsOp sop(statsv, centroids);
if(ltype == CV_16U){
return connectedComponents_sub1(img, labels, connectivity, sop);
}else if(ltype == CV_32S){
return connectedComponents_sub1(img, labels, connectivity, sop);
}else{
CV_Error(CV_StsUnsupportedFormat, "the type of labels must be 16u or 32s");
return 0;
}
}

如您所见,在这两种情况下,标记部分均由 connectedComponents_sub1 函数执行。两者之间的唯一区别是统计计算:connectedcomponents::NoOpconnectedcomponents::CCStatsOp,与标签计算无关。

距离变换

void cv::distanceTransform( InputArray _src, OutputArray _dst, OutputArray _labels,
int distType, int maskSize, int labelType )
{
...
if( labelType == CV_DIST_LABEL_CCOMP )
{
Mat zpix = src == 0;
connectedComponents(zpix, labels, 8, CV_32S);
}
...
}

标签由函数 connectedComponents 在内部计算。

关于opencv - 在 OpenCV 中标记图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com