OpenCV3編程入門讀書筆記2-core組件
阿新 • • 發佈:2017-08-03
編程 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組件