C++ 如何删除图像边框附近的项目
我有一个二值图像,在黑色背景上包含白色原子核。 在我的处理过程中,我需要从图像中去除那些被边界部分剪掉的细胞核 下面是一张图片,对于这个例子,我想去掉顶部边界的四个原子核,以及底部的四个原子核。如何使用OpenCV实现这一点C++ 如何删除图像边框附近的项目,c++,opencv,border,C++,Opencv,Border,我有一个二值图像,在黑色背景上包含白色原子核。 在我的处理过程中,我需要从图像中去除那些被边界部分剪掉的细胞核 下面是一张图片,对于这个例子,我想去掉顶部边界的四个原子核,以及底部的四个原子核。如何使用OpenCV实现这一点 我需要消除那些接触边界的核。扫描图像的边界,当你发现一个带黑色的白色像素时 您将需要以下内容: uchar white(255); // do top and bottom row for(int y = 0; y < image.rows; y += image
我需要消除那些接触边界的核。扫描图像的边界,当你发现一个带黑色的白色像素时 您将需要以下内容:
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));
}
}
}
ucharwhite(255);
//做第一排和第二排
对于(int y=0;y
。。。而且很紧急!请认真地如果你有急事,这一点都不重要。我认为这对这里的大多数研究人员来说并不紧迫:P…这个问题有很多错误,但我不确定为什么人们投票关闭,因为它太广泛了。我很抱歉。不过还是要谢谢你