VC+DirectShow对视频进行图片处理之四
2007-03-15 21:48:55 来源:WEB开发网调整亮度很简单,例如要加亮 10,把 RGB 都加上 10 就可以了,减亮就减10。
对比度调整也不难,书上说是要令亮点更亮、暗点更暗,好像是要找出亮点来增亮、找出暗点加暗,其实不然,把所有点都乘以一个数,把亮暗点的差距拉大或减小就能调整对比度了。把图像原来的对比度定为 1,要增大对比度就调整为 1.3 、2 等大于1 的数,把每个点的 RGB 都乘以它,就行了,要降低就把数值设为 0 至 1 的数。只要注意保持 RGB 的值在 0 ~ 255 中即可。
5. 马赛克
马赛克效果就是把图像分解成 m * n 个小块 或长宽为 x 、y 的小块,用小块内的某点颜色作为整块的颜色,通常用左上角的颜色。
动起手编程会很麻烦,要定位到每小块的左上角,才能改变块内的颜色,因此要用很多循环,我在代码中就用了12个循环!除此,还有逻辑麻烦,拿分成宽高为 x、y 的小块这种情况为例,您不能保证图像的长宽刚好都是 x、y的倍数,很多时会余出一些"边角料",这就是麻烦,不可能舍弃它们不进行处理,因为很影响效果。因此如图所示,要先处理蓝色的倍数部分,再处理绿色的宽度上余下部分,处理红色的高度上余下部分,还有黄色的宽高夹缝的小块。
除了这种长方形的处理,还可以试验上面右图菱形等形状,当然,您要付出很大的劳动,而我没能做到这些。
6. MMX
记得在上面我说过会在文章中涉及一点MMX,不妨在这里涉及。在 VC 中可以镶入汇编使汇编变得很容易,完全不是纯汇编代码所能相比的,所以不用怕汇编,可以先用 C 语言写出实现代码,再用汇编"翻译"过来。如果译不出来,更加可以把代码中断一下,让 VC 反汇编,看 VC 的汇编代码,再行改进,为什么不行呢,有人用枪指着您么?记住哦,如果没办法改进就放弃汇编,不要做多余的事。其实要用 MMX 也不一定非用汇编不可,VC 也提供了 MMX 的 C++ 封装,学习后可用它,我则懒于学习。
Tags:VC DirectShow 视频
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接