如何在 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;
}輸出

廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP