簡體   English   中英

如何提取給定顏色的圖像的一部分?

[英]How to extract a portion of an image given a particular color?

PNG圖像 我有一張圖片(如下所示)。 我只想提取粉紅色的部分,然后刪除其余的圖像。 我將粉紅色的RGB值存儲在數組中。 有什么方法可以在圖像和顏色上使用bitwise_and ,以便可以在OpenCV中選擇所需的部分?

Bitwise_and不是正確的方法,因為它是按位的。 但是在OpenCv中,當然有一些用於此基本任務的方法:

如果您知道確切的值,則可以使用CmpS方法。 如果要查找某個范圍內的所有粉紅色,請使用InRangeS方法。 (可選)首先更改圖像的色彩空間,例如,如果要在HSV空間中指定范圍。

由於您的綠色不均勻,但范圍從:

// in BGR color space
Scalar low(182, 204, 168);
Scalar high(187, 207, 172);

// in HSV color space
Scalar low(72, 43, 204);
Scalar high(72, 45, 207);

您可以使用inRange函數。 您可以根據需要分割的顏色調整范圍。

通常,HSV顏色空間更適合基於顏色的分割任務,但在這種情況下,BGR顏色空間也足夠好。

此代碼顯示如何獲取所需顏色的二進制蒙版,以及如何僅在BGR和HSV顏色空間中復制原始圖像的蒙版部分。

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{

    // Load image
    Mat3b img = imread("path_to_image");
    {
        // BGR color space

        // Setup ranges
        Scalar low(182, 204, 168);
        Scalar high(187, 207, 172);

        // Get binary mask
        Mat1b mask;
        inRange(img, low, high, mask);

        // Initialize result image (all black)
        Mat3b res(img.rows, img.cols, Vec3b(0, 0, 0));

        // Copy masked part to result image
        img.copyTo(res, mask);

        imshow("Mask from BGR", mask);
        imshow("Result from BGR", res);
        waitKey();

    }

    {
        // HSV color space

        // Convert to HSV
        Mat3b hsv;
        cvtColor(img, hsv, COLOR_BGR2HSV);

        // Setup ranges
        Scalar low(72, 43, 204);
        Scalar high(72, 45, 207);

        // Initialize result image (all black)
        // Get binary mask
        Mat1b mask;
        inRange(hsv, low, high, mask);

        // Initialize result image (all black)
        Mat3b res(img.rows, img.cols, Vec3b(0, 0, 0));

        // Copy masked part to result image
        img.copyTo(res, mask);

        imshow("Mask from HSV", mask);
        imshow("Result from HSV", res);
        waitKey();
    }

    return 0;
}

面具的例子:

在此處輸入圖片說明

分割圖像的示例:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM