Я сделал это использование TortoiseSVN.
созданный в утилите слияния позволяет Вам показывать разность между версией репозитория и Вашей рабочей копией.
Использование эти создает резервное копирование , функция различной утилиты
у Вас должны теперь быть все свои фиксировавшие изменения, с помощью двух отдельных фиксаций.
Согласно документации imfill
в MATLAB:
BW2 = imfill (BW, 'дыры');
заполняет дыры в двоичном изображении
BW
. Дыра - это набор фоновых пикселей, которые не могут быть достигнуты путем заполнения фона от края изображения.
Поэтому, чтобы получить пиксели «дыр», вызовите cvFloodFill
с левой стороны. угловой пиксель изображения как начальный. Вы получите отверстия, дополнив изображение, полученное на предыдущем шаге.
BW = im2bw( imread('coins.png') );
subplot(121), imshow(BW)
% used here as if it was cvFloodFill
holes = imfill(BW, [1 1]); % [1 1] is the starting location point
BW(~holes) = 1; % fill holes
subplot(122), imshow(BW)
Вы пробовали ContourFinding поверх Cannyied Image?
cvFindContours создает своего рода дерево, в котором внешние счетчики являются родителями внутренних контуров («дыр»). См. Образец contours.py. По контурам можно было извлечь семена
Вот быстрый и грязный подход:
функция cvDrawContours имеет возможность заливки контуров, которые вы нарисовали.
Вот небольшой пример. cvDrawContours (IplImage, contours, color, color, -1, CV_FILLED, 8);
Вот документация
Я полагаю, вы опубликовали это очень давно, но я надеюсь, что это кому-то поможет.
Это исходный код (на C #):
Image<Gray, byte> image = new Image<Gray, byte>(@"D:\final.bmp");
CvInvoke.cvShowImage("image 1", image);
var contours = image.FindContours();
while (contours != null)
{
CvInvoke.cvDrawContours(image, contours, new Gray(255).MCvScalar, new Gray (255).MCvScalar, 0, -1, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, new DPoint(0, 0));
contours = contours.HNext;
}
CvInvoke.cvShowImage("image 2", image);