Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何删除图像边框附近的项目_C++_Opencv_Border - Fatal编程技术网

C++ 如何删除图像边框附近的项目

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

我有一个二值图像,在黑色背景上包含白色原子核。 在我的处理过程中,我需要从图像中去除那些被边界部分剪掉的细胞核

下面是一张图片,对于这个例子,我想去掉顶部边界的四个原子核,以及底部的四个原子核。如何使用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));
        }
    }
 }
ucharwhite(255);
//做第一排和第二排
对于(int y=0;y
。。。而且很紧急!请认真地如果你有急事,这一点都不重要。我认为这对这里的大多数研究人员来说并不紧迫:P…这个问题有很多错误,但我不确定为什么人们投票关闭,因为它太广泛了。我很抱歉。不过还是要谢谢你