У меня есть двоичное изображение, содержащее белые ядра на черном фоне.
Для моей обработки мне нужно исключить из изображения те ядра, которые были частично обрезаны границей.
Ниже приведено изображение, для этого случая я хотел бы удалить четыре ядра на верхней границе и четыре на нижней. Как я могу сделать это с OpenCV?
Мне нужно устранить те ядра, которые касаются границы.
Сканируйте границы изображения и когда вы найдете белый пиксель заливка с черным.
Вы хотите что-то вроде:
uchar white(255);
// do top and bottom row
for(int y = 0; y < image.rows; y += image.rows-1)
{
uchar* row = image.ptr<uchar>(y)
for(int x = 0; x < image.cols; ++x)
{
if(row[x] == white)
{
cv::floodFill(image, cv::Point(x,y), cv::Scalar(0), (cv::Rect*)0, cv::Scalar(), cv::Scalar(200));
}
}
}
// fix left and right sides
for(int y = 0; y < image.rows; ++y)
{
row = image.ptr<uchar>(y)
for(int x = 0; x < image.cols; x += image.cols - 1)
{
if(row[x] == white)
{
cv::floodFill(image, cv::Point(x,y), cv::Scalar(0), (cv::Rect*)0, cv::Scalar(), cv::Scalar(200));
}
}
}