opencv 3.0 灰度圖轉彩圖 applyColorMap


opencv 3.0 灰度圖 轉 彩圖 applyColorMap

matlab有個imagesc,在opencv中 沒有對應的函數

代碼

 

#include<opencv2/opencv.hpp>
using namespace cv;

void main()
{
    const char* imagename = "2.jpg";
    //產生灰度圖
    Mat img = imread(imagename);
    Mat gray, color;
    cvtColor(img, gray, CV_RGB2GRAY);
    //灰度彩色映射變換
    double vmin, vmax, alpha;
    minMaxLoc(gray, &vmin, &vmax);
    alpha = 255.0 / (vmax - vmin);
    gray.convertTo(gray, CV_8U, alpha, -vmin * alpha);//圖像增強
    applyColorMap(gray, color, COLORMAP_JET);

    imshow("image", img); //顯示圖像    
    imshow("gray", gray);
    imshow("color", color);
    waitKey();
    destroyAllWindows();

}

 

minMaxLoc()函數
功能:查找全局最小和最大數組元素並返回它們的值和它們的位置。

void minMaxLoc(InputArray src, CV_OUT double* minVal,
                           CV_OUT double* maxVal=0, CV_OUT Point* minLoc=0,
                           CV_OUT Point* maxLoc=0, InputArray mask=noArray());

參數解釋
參數1:InputArray類型的src,輸入單通道數組(圖像)。
參數2:double*類型的minVal,返回最小值的指針。若無須返回,此值置為NULL。
參數3:double*類型的maxVal,返回最大值的指針。若無須返回,此值置為NULL。
參數4:Point*類型的minLoc,返回最小位置的指針(二維情況下)。若無須返回,此值置為NULL。
參數5:Point*類型的maxLoc,返回最大位置的指針(二維情況下)。若無須返回,此值置為NULL。
參數6:InputArray類型的mask,用於選擇子陣列的可選掩膜。

 

convertTo的用法

src.convertTo(dst, type, scale, shift)

img參數為圖像數據來源,其類型為Mat。
注意也不是所有格式的Mat型數據都能被使用保存為圖片,目前OpenCV主要只支持單通道和3通道的圖像,並且此時要求其深度為8bit和16bit無符號(即CV_16U),所以其他一些數據類型是不支持的,比如說float型等。
如果Mat類型數據的深度和通道數不滿足上面的要求,則需要使用convertTo()函數和cvtColor()函數來進行轉換。
convertTo()函數負責轉換數據類型不同的Mat,即可以將類似float型的Mat轉換到imwrite()函數能夠接受的類型。
而cvtColor()函數是負責轉換不同通道的Mat,因為該函數的第4個參數就可以設置目的Mat數據的通道數(只是我們一般沒有用到它,一般情況下這個函數是用來進行色彩空間轉換的)。
另外也可以不用imwrite()函數來存圖片數據,可以直接用通用的XML IO接口函數將數據存在XML或者YXML中。

縮放並轉換到另外一種數據類型:
dst:目的矩陣;
type:需要的輸出矩陣類型,或者更明確的,是輸出矩陣的深度,如果是負值(常用-1)則輸出矩陣和輸入矩陣類型相同;
scale:比例因子;
shift:將輸入數組元素按比例縮放后添加的值;
dst(i)=src(i)xscale+(shift,shift,...)

如果scale=1,shift=0,則不進行比例縮放。
如果輸入數組與輸出數組的類型相同,則函數可以被用於縮放和平移矩陣或圖像;

applyColorMap()

 

 

參考:https://blog.csdn.net/billbliss/article/details/43452173

參考:https://blog.csdn.net/haima1998/article/details/82079042


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM