1. 程式人生 > >OpenCV3編程入門讀書筆記2-core組件

OpenCV3編程入門讀書筆記2-core組件

編程 opencv () -c enc 數組 ont ble 興趣

一、顏色空間縮減

1、概念

如果圖像是3通道,深度為1個字節,則每個像素有256*256*256種可能值,這麽多的可能值會對算法性能造成嚴重影響。利用顏色空間縮減就能解決這個問題,例如將顏色值0~9取為新值0,10~19取為10,以此類推,這樣每個像素有26*26*26種可能值,比上面的可能值要小很多。

2、公式

P_New = ( P_Old / divide ) * divide (P表示像素值)

3、處理

如果對原圖像每個像素都進行上面的公式運算,運算量將非常大。可以將0~255這256種情況對應的新值計算出來,存放在table中,然後將原圖像的像素值按照table表取出新值即可。

uchar table[256];

for( int i=0; i<256; i++ )

  table[i] = ( i / divide ) * divide;

P_New = table[ P_New ];

4、LUT函數

OpenCV提供了LUT函數幫我們完成上面的處理。

示例:

 1 Mat srcImage = imread("test.jpg");
 2     
 3 Mat lookUpTable(1,256,CV_8U);
 4 uchar* p = lookUpTable.data;
 5 for(int i=0; i<256; i++)
 6 {
 7     p[i] = i/30*30;
 8 }
9 10 Mat destImage; 11 destImage.create(srcImage.size(),srcImage.type()); 12 13 LUT(srcImage,lookUpTable,destImage); 14 15 imshow("srcImage",srcImage); 16 imshow("destImage",destImage);

二、圖像疊加

 1 Mat srcImage = imread("test.jpg");
 2 Mat logoImage = imread("logo.png");
 3 //加載掩模(必須是灰度圖)
 4 Mat maskImage = imread("
logo.png",0); 5 6 //設置感興趣區域 7 Mat ROIImage = srcImage(Rect(20,20,logoImage.cols,logoImage.rows)); 8 9 logoImage.copyTo(ROIImage,maskImage); 10 11 imshow("srcImage",srcImage);

三、線性混合操作

1、計算數組加權和:addWeighted()

OpenCV3編程入門讀書筆記2-core組件