当前位置: 首页 > 工具软件 > DarkGDK > 使用案例 >

DarkGDK库学习笔记(肆)

fancie
2023-12-01
   这一篇专门来说说 色键技术~~~

    没用过C的图形处理库,底层的东西掌握起来比较困难,但用DarkGDK处理图形就相对简单很多~~~

    色键技术也称为色度键,作用是使图像中的一些像素透明~~~

    先举几个色键技术的实例,比如我没去过火星,但是很想跟学妹吹吹牛,说说火星的样子,这个时候我可以利用色键技术来合成我在火星的照片,欺骗一下无知学妹,最后一个眼睛巨美无比的学妹站了出来,尖叫:学长,你好帅啊~~~之后,很自然地被学长占便宜,直到她认清学长我的禽兽本质~~~

    讲白了,色键技术用作照片和视频的合成,先在黑框框里加载你需要的背景图像,然后在加载前景图像,背景图像不需要做任何处理,前景图像的背景需要单一。单一的颜色很容易就可以写出它的red,green和blue通道值,在加载时,使前景图像的背景颜色透明就OK了,如果前景图像的背景颜色不单一,那么需要逐像素去处理,非常困难,也没有一个2货会这么做~~~

    可以利用Windows自带的画图工具或者PS将照片的背景擦去,先后填充为单一颜色,之后就可进行合成~~~

    八卦的娱乐节目也经常会播出一些明星拍广告的镜头,你会发现,很多是在摄影棚里完成的,而且背景是一块单一颜色的幕布,一般为蓝色或者绿色,幕布的颜色就是前面提到的需要做透明处理的颜色,在摄影棚里拍完,然后先加载背景视频,然后加载摄影棚里拍的视频,使幕布的颜色透明,OK,你就可以看到一群帅哥美女在田野里疯狂地奔跑,尽管本质是他们在摄影棚里奔跑~~~

    ps:帅哥美女不会穿着和幕布颜色一样的衣服拍广告,因为后期处理的时候会被透明化~~~    

    如果冠希老师能学会这个技术,我想,我们看到的他的作品会更精彩一些~~~

    当然,用PS抠图然后再处理也可以做出相同的效果,但仅限于静态的图片~~~

    我是菜鸟,因此下面也就简单的介绍下用色键技术处理图像~~~    

    

    先介绍几个有关函数~~~

    44.dbLoadImage(string,int)

    void型,一个字符串参数,一个整形参数,第一个表示图像的文件名(图像和程序不在同一目录下需要写图像的路径名),第二个表示图像的编号,范围在1~65535之间,作用:加载图像到内存,并规定其编号,但并不显示它~~~

    这个函数和dbLoadBitmap函数类似,但是要用色键技术的话,必须用这个函数来加载图像~~~

    这里突然就不叫位图了,改称图像,位图和图像是有区别,但先当成一个概念~~~

    45.dbPasteImage(int,int,int,int)

    void型,四个整形参数,第一个表示图像编号,第二个和第三个表示图像的左上角坐标,最后一个为0或者1,0表示图像中没有像素被视为透明,1表示图像中具有键色的所有像素都被视为透明,默认键色是黑色~~~

    46.dbSetImageColorKey(int,int,int)

    void型,三个整形参数,第一个表示红色通道值,第二个表示绿色通道值,作用:更改键色~~~

    tips:dbSetImageColoKey函数必须在dbLoadImage函数之前调用~~~

    47.dbDeleteImage(int)

    void型,一个整形参数,表示图像编号,作用:从内存中删除图像~~~


    下面放一个书上的例子:

    #include"DarkGDK"  //包含头文件,因为没有用到C++中的库,因此不需要包含iostream.h之类的头文件

    void DarkGDK() //相当于C和纯C++种的int main()

    {

        dbSetImageColorKey(0,255,0); //更改默认键色为绿色

        dbLoadImage("Web.bmp",1);//加载图像1

        dbLoadImage("Spider.bmp",2);//加载图像2

        dbPasteImage(1,0,0,0);/*显示图像1为背景图像,图像左上角在屏幕坐标系的(0,0)点,因为背景不需要透明,因此 最后一个参数为0,表示图像中没有像素被视为透明*/

        dbPasteImage(2,300,150,1);/*显示图像2为前景图像,图像的左上角在屏幕坐标系的(300,150)点,图像中为绿色(0,255,0)的像素显示为透明*/

        dbWaitKey();//等待用户输入任意键结束程序

    }

    tips:

    *先显示背景图像再显示前景图像。

    *采用色键技术时,图像格式必须为.bmp,用其他格式保存图像将会使图像失真,图像中每个点的像素值会改变。

    用完图像后删除是很有必要的,不然会一直占用内存,上面的程序没有删除图像,说明男人(该书作者性别为雄)都是口是心非的,比如,一个学长对一个学妹说,我好想抱着你睡,绝对不做其他事,指不定他刚看完苍老师的电影呢~~~

    因此,同学们用完图像的时候,记得删除,做个有担当的好学长,这时候该怎么和学妹说,也许是:学长刚看完苍老师的电影,生理需求很迫切~~~

    但是往往超前的思想和行为不被人们接受,本质禽兽表现的也禽兽的学长永远没有本质禽兽变现的正义的学长受欢迎~~~

    色键技术,OVER~~~


 类似资料: