ios - OpenCV 将颜色设置为前景标记像素 GC_PR_FGD

标签 ios image-processing opencv pixel foreground

我使用 cv::grabCut 从图像中提取对象。运行良好。

现在我将对象放在一个没有背景的单独垫子中,并且我想将整个对象设置为黑色。我想将所有标有 GC_PR_FGD 的像素(前景像素)设置为黑色。

我该怎么做?

谢谢!!

最佳答案

来自cv::grabCut documentation看来您可以获得具有以下值的掩码作为输出:

  • GC_BGD 当然是背景像素
  • GC_FGD 当然是前景(对象)像素
  • GC_PR_BGD 可能是背景像素
  • GC_PR_FGD 可能是前景像素

我假设您想要一个背景为白色、前景为黑色的图像。在这种情况下,您可以创建一个新矩阵,并在循环遍历蒙版像素时,根据蒙版像素值向该矩阵分配 0 或 1(或 255)。

例如,假设您已获得 cv::Mat mask 作为算法的结果,请执行以下操作(警告,我尚未编译,它是近似值):

cv::Mat binaryImage = zeros(mask.rows, mask.cols, CV_8U);

for (int i==0; i<mask.rows; ++i){
    for (int j==0; j<mask.cols; ++j){
        // choose pixels that are certainly or likely background
        if (mask.at<uchar>(i,j) == GC_BGD || mask.at<uchar>(i,j) == GC_BGD){
            binaryImage.at<uchar>(i,j) = 255;
        }
    }
}

关于ios - OpenCV 将颜色设置为前景标记像素 GC_PR_FGD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12810405/

相关文章:

ios - View 不适合 iOS 模拟器

ios - "Template Rendering is not supported in texture atlases"SpriteKit 和 Xcode

javascript - 为什么Swift无法识别JS发送的数组?

用于 OCR 的 Python OpenCV 偏差校正

ios - 如何在 iOS 设备上滚动时保持动画 gif 动画?

opencv - OpenCV视频帧元数据的读写

ios - 将解析数组分配给 UITextView

Android - 缩放设备屏幕捕获的图像

c++ - 交叉编译时包含外部库

c++ - 如何显示窗口大小不同的输出图像?