如何在 OpenCV 中使用 C++ 建立二值影像?


二值影像只是一個數字影像,它表示兩種顏色:黑色和白色。從影像處理的角度來看,二值影像包含具有兩個可能值的畫素 - 零和一。當畫素值為 0 時,它表示純黑色。當畫素值為 1 時,表示純白色。

在灰度影像中,每個畫素有 256 個不同的可能值。但在二值影像中,只有兩個可能的值。二值影像具有不同型別的應用。例如,形態學變換需要二值影像,從背景中提取物件形狀需要二值影像等。使用 OpenCV,我們可以自由地將影像轉換為二值影像。

以下示例將載入到“original_image”矩陣中的影像轉換為灰度影像,並將其儲存到“grayscale_image”矩陣中 -

cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);

下一行將灰度影像轉換為二值影像,並將轉換後的影像儲存到“binary_image”矩陣中。

threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);

這裡“grayscale_image”是源矩陣,“binary_image”是目標矩陣。之後,有兩個值 100 和 255。這兩個值表示閾值範圍。在這行程式碼中,閾值範圍表示要轉換的灰度畫素值。

以下程式載入影像並將其轉換為二值影像。

示例

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
   Mat original_image;//declaring a matrix to load the original image//
   Mat grayscale_image;//declaring a matrix to store grayscale image//
   Mat binary_image;//declaring a matrix to store the binary image
   namedWindow("Original Image");//declaring window to show binary image//
   namedWindow("Show Binary");//declaring window to show original image//
   original_image = imread("teddy.jpg");//loading image into matrix//
   cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);//Converting BGR to Grayscale image and storing it into converted matrix//
   threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);//converting grayscale image stored in converted matrix into binary image//
   imshow("Original Image", original_image);//showing Original Image//
   imshow("Show Binary", binary_image);//showing Binary Image//
   waitKey(0);
   return 0;
}

輸出

更新於: 2021年3月10日

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.