
C/C++ code
#ifndef CAPTUREBLT
#define CAPTUREBLT 0x40000000
#endif
HBITMAP CaptureScreen(LPRECT lpRect)//lpRect为NULL时表示全屏幕截图
{
HDC hdc, hdcMem ;
HBITMAP hemfCopy ;
HWND h……
由于没有上下文,只能进行以下猜测:
-图象幅面宽度为640,高度480,象素宽度为24位,实际占用32位;
-pMem可能是每个单元(32位)存放一个象素;
-RGB是将三个字节组合成一个象素24位,BGR是将RGB顺序的图象象素中红和蓝的字节调换;
-前面一个循环将图象第3行到477行进行均值滤波,滤波方式是将该象素附近8个点与此象素求和再除以9得到平均值;
-后面一个循环是将图象未做滤波的几行填充成白色;
-图象处理算法可能存在问题:应该利用双存储区进行运算,结果为了节省内存导致均值运算会得不到正确运算,比如我们计算屏幕中心点的均值时,取到的左边一个象素、整个上面的3个象素均已经被之前的均值运算结果覆盖了,不是原来的象素数据了。也可能是利用高位未使用的字节存放的处理结果?由于没有RGB的定义无法判断。
以上就是关于C语言怎么截屏并将数据转换成RGB或YUV420全部的内容,包括:C语言怎么截屏并将数据转换成RGB或YUV420、求解这段C语言程序什么意思、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)