1''*_*1'' 13 opencv image-processing flood-fill
给定图像上的一个点,我想要填充连接到该点的所有点 - 但是要填充到新图像上.一种天真的方法是将原始图像填充到特殊的魔术颜色值.然后,访问每个像素,并将具有此魔术颜色值的所有像素复制到新图像.肯定有更好的办法!
Sas*_*ssa 25
为什么不使用cv :: floodFill的第二个变体来创建掩码?
int floodFill(InputOutputArray image,InputOutputArray mask,Point seedPoint,Scalar newVal,Rect*rect = 0,Scalar loDiff = Scalar(),Scalar upDiff = Scalar(),int flags = 4)
原始图像
cv::Mat img = cv::imread("squares.png");

第一个变种
cv::floodFill(img, cv::Point(150,150), cv::Scalar(255.0, 255.0, 255.0));
这是 img
第二个变种
cv::Mat mask = cv::Mat::zeros(img.rows + 2, img.cols + 2, CV_8U);
cv::floodFill(img, mask, cv::Point(150,150), 255, 0, cv::Scalar(), cv::Scalar(), 4 + (255 << 8) + cv::FLOODFILL_MASK_ONLY);
这是mask.img不会改变
如果你喜欢这个,请注意:
由于掩模大于填充图像,因此图像中的像素(x,y)对应于掩模中的像素(x + 1,y + 1).
| 归档时间: |
|
| 查看次数: |
16020 次 |
| 最近记录: |