直方图均衡化opencv(彩色、灰度图)
生活随笔
收集整理的這篇文章主要介紹了
直方图均衡化opencv(彩色、灰度图)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直方圖均衡化
void equalizeHist(InputArray src, OutputArray dst);
.?src:輸入圖像,需為8-bit單通道
. dst: 目標圖像,與原圖像有相同的尺寸和類型。
示例代碼
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;void print()
{cout << "【1】:進行灰度圖像均衡化" << endl;cout << "【2】:進行彩色圖像均衡化" << endl;cout << "——————————————" << endl;
}int main()
{print();double time0 = static_cast<double>(getTickCount());//記錄起始時間//改變console(控制臺)字體顏色 system("color 0B");//載入原圖Mat src = imread("12.bmp");Mat dst;dst = src.clone();//判斷圖片是否讀入if (!src.data){printf("Oh,no,讀取圖片image0錯誤~! \n");return false;}//循環輪詢按鍵while (1){//先顯示效果圖imshow("原圖", src);//獲取鍵盤按鍵int c = waitKey(0);//判斷ESC是否按下,若按下便退出if ((c & 255) == 27){std::cout << "程序退出!\n";break;}//根據按鍵的不同,進行各種操作switch ((char)c){case '1':std::cout << "您正在進行灰度圖像均衡化" << endl;cvtColor(src, dst, COLOR_BGR2GRAY);equalizeHist(dst, dst);imshow("結果圖", dst);break;case '2':std::cout << "您正在進行彩色圖像均衡化" << endl;vector<Mat> mv;split(src, mv); equalizeHist(mv[0], mv[0]);equalizeHist(mv[1], mv[1]);equalizeHist(mv[2], mv[2]);merge(mv, dst);imshow("結果圖", dst);break;}}time0 = ((double)getTickCount() - time0) / getTickFrequency();std::cout << "此方法運行時間:" << time0 << "秒" << endl;//輸出運行時間return 0;
}
?
?
?
?
總結
以上是生活随笔為你收集整理的直方图均衡化opencv(彩色、灰度图)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv仿射变换
- 下一篇: 判断图像质量的好坏(opencv)