Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จะสร้างภาพไบนารีใน OpenCV โดยใช้ C ++ ได้อย่างไร


ภาพไบนารีเป็นเพียงภาพดิจิทัลที่แสดงสองสีคือขาวดำ จากมุมมองของการประมวลผลภาพ ภาพไบนารีประกอบด้วยพิกเซลที่มีค่าที่เป็นไปได้สองค่า - ศูนย์และหนึ่ง เมื่อค่าของพิกเซลเป็น 0 แสดงว่าเป็นสีดำล้วน เมื่อค่าของพิกเซลเท่ากับ 1 แสดงว่าเป็นสีขาวบริสุทธิ์

ในภาพระดับสีเทา มีค่าที่เป็นไปได้ที่แตกต่างกัน 256 ค่าสำหรับแต่ละรายการ แต่ใน Binary Image มีค่าที่เป็นไปได้เพียงสองค่าเท่านั้น ภาพไบนารีมีแอปพลิเคชันประเภทต่างๆ ตัวอย่างเช่น การแปลงทางสัณฐานวิทยาต้องใช้รูปภาพไบนารี การดึงรูปร่างวัตถุจากพื้นหลังต้องใช้รูปภาพไบนารี เป็นต้น การใช้ 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;
}

ผลลัพธ์

จะสร้างภาพไบนารีใน OpenCV โดยใช้ C ++ ได้อย่างไร