首页 > 代码库 > OpenCV3编程入门读书笔记2-core组件
OpenCV3编程入门读书笔记2-core组件
一、颜色空间缩减
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组件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。