网站排名的优化,wordpress+免费博客平台,小程序源码网免费下载,网页设计与制作教程课后答案第三版背景
我在做瑕疵检测的时候#xff0c;通过计算瑕疵区域的个数#xff08;count_obj#xff08;#xff09;#xff09;是否为0#xff0c;来判断是否有瑕疵#xff0c;如果不为0#xff0c;那边我就会在图片上标记这个瑕疵的位置#xff01;
但是有一次我发现明明没…背景
我在做瑕疵检测的时候通过计算瑕疵区域的个数count_obj是否为0来判断是否有瑕疵如果不为0那边我就会在图片上标记这个瑕疵的位置
但是有一次我发现明明没有瑕疵却在图片的左上角标记了一个瑕疵。
发现问题
然后我调试发现当一个区域为空时他的个数count_obj居然时1 根据上下文我先分析一下 difference (RegionBlackOpening, SelectedRegions2, RegionDifference1) RegionBlackOpening 本身时有值的SelectedRegions2其实是和RegionBlackOpening是同一块区域。 两个相同的区域相减当然得到了一个空的区域所以这里的意思就是区域是空的但是空的区域也是区域所以计数是1 所以一个空的区域却被硬生生标记所以就出现在了图片的左上角00的位置
问题解决
所以判断一个区域是否为空不能判断他的个数而应该判断他的面积。 如果面积是0那么这个区域就是空这里给一个C#的Demo。
/// summary
/// 判断区域是否为空
/// /summary
/// returns/returns
bool RegionIsEmpty(HObject region)
{HTuple area;HOperatorSet.AreaCenter(region, out area, out _, out _);if (area 0) return true;else return false;
}