Computer >> Máy Tính >  >> Lập trình >> C ++

Làm thế nào để áp dụng Bộ cân bằng biểu đồ trong OpenCV bằng C ++?

Biểu đồ thể hiện cường độ chiều sâu của hình ảnh. Ví dụ, hãy xem xét một hình ảnh có độ sâu màu là 8 bit. Nó có nghĩa là mỗi pixel có thể có độ sâu màu từ 0 đến Có nghĩa là từ 0 đến 255. Nếu hình ảnh là hình ảnh RGB, nó có kênh màu đỏ, xanh lục và xanh lam. Ví dụ, tại điểm của hình ảnh, chỉ có màu đỏ. Khi đó độ sâu màu của hình ảnh đó nằm trong kênh màu đỏ và giá trị của pixel sẽ thay đổi từ 0 đến 255. 0 có nghĩa là không có màu đỏ và 255 có nghĩa là được đọc nhiều hơn.

Biểu đồ hiển thị loại kết quả này cho tất cả các kênh và tất cả các màu. Bằng cách thay đổi giá trị của các pixel, bạn có thể thay đổi cường độ của một số pixel màu cụ thể. Ví dụ:nếu bạn muốn tăng mật độ kênh màu đỏ, bạn có thể thay đổi giá trị của kênh màu đỏ.

Trước hết, chúng tôi sẽ áp dụng bộ cân bằng biểu đồ trong một hình ảnh màu xám. Hình ảnh màu xám chỉ bao gồm đen và trắng. Điều đó có nghĩa là chỉ có một kênh. Hình ảnh là hình ảnh 8-bit. Nó có nghĩa là độ sâu màu thay đổi từ 0 đến 255. 0 có nghĩa là màu trắng và 255 có nghĩa là màu đen. Trong đoạn mã sau, chúng tôi sẽ tải một hình ảnh màu và sẽ chuyển đổi nó sang thang độ xám. Sau đó, chúng tôi sẽ sử dụng chức năng "equalizeHist" của OpenCV để cân bằng các giá trị pixel.

Chương trình sau đây cho biết cách áp dụng Bộ cân bằng biểu đồ trong OpenCV.

Ví dụ

#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
   Mat original;//Declaring a matrix//
   original = imread("view.jpg");//loading the image
   Mat gray;//declaring a matrix//
   cvtColor(original, gray, COLOR_BGR2GRAY);//converting to grayscale//
   Mat hist;//declaring a matrix//
   equalizeHist(gray, hist);//applying histogram equalizer
   namedWindow("Original");//window for actual image//
   namedWindow("gray");//window for grayscale image//
   namedWindow("histogram");//window for histogram//
   imshow("Original", original);//showing actual image//
   imshow("gray", gray);//showing grayscale image//
   imshow("histogram", hist);//showing histogram effect
   waitKey(0);//wait for keystroke//
   return(0);
}

Đầu ra

Làm thế nào để áp dụng Bộ cân bằng biểu đồ trong OpenCV bằng C ++?