3. 将填充之后的图像颜色反转,再剪裁成原始图像大小。此时这张图像除了内部需要填充的地方是白色之外其他地方都是黑色。
4. 最后将新图像和原始图像取个并集,完成。
代码如下:
/**
\brief 填充二值图像孔洞
\param srcimage [in] 输入具有孔洞的二值图像
\param dstimage [out] 输出填充孔洞的二值图像
\return void
*/
void imfill(Mat srcimage, Mat &dstimage)
{
Size m_Size = srcimage.size();
Mat temimage = Mat::zeros(m_Size.height + 2, m_Size.width + 2, srcimage.type());//延展图像
//imshow(“temimage”, temimage);
srcimage.copyTo(temimage(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1)));
floodFill(temimage, Point(0,0), Scalar(255));
//imshow(“temimage”, temimage);
//waitKey(0);
Mat cutImg;//裁剪延展的图像
temimage(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1)).copyTo(cutImg);
dstimage = srcimage | (~cutImg);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/140248.html