用VC如何获得正在播放的视频中某一点的颜色数据

用VC如何获得正在播放的视频中某一点的颜色数据,第1张

你的pDC应该是对话框的吧,WindowsMediaPlar插件是对话框上的另一个子窗口,所以要取得WindowsMediaPlar插件的pDC才行

WindowsMediaPlar插件的窗口句柄hwnd,pDC=GetDC(hwnd)

按这个方案,试试

rgb=::GetPixel(::GetDC(0),Posx ,Posy);

r=GetRValue(rgb);

g=GetGValue(rgb);

b=GetBValue(rgb);

你这个题目不小,首先你要知道这种文件的格式。然后再按格式打开,并找到数据的存放区域,不按要求才能读出数据。比如,许多书上都介绍的位图文件,有文件头和数据区组成,你需要知道文件头有多大,然后数据区的开始位置需要找到,还应清楚图像信息的放置是从后到前的,也就是说信息是倒置的。另外,jpg图像也有相应的格式,找一本图像处理的书,看看各种图像的格式。

两种方法可以解决:

一、你的图被显示到窗体上或者控件里,获得窗口或控件的DC,然后用GetPixel函数得到一个像素的值,这个像素应该是你确认它在背景上。

例如:

//获取窗体DC

CDC pDC = GetDC();

//获取颜色值

COLORREF cr = pDC->GetPixel(CPoint(1,1));

//提取RGB分量

BYTE btR = GetRValue(cr);//R值

BYTE btG = GetGValue(cr);//G值

BYTE btB = GetBValue(cr);//B值

//如果btR==255,而btG==0、btB==0,则说明是红色

//如果btR==255,而btG==255、btB==0,则说明是**

二、如果你打开图时,已经获得了它的DIB值,那么就可以直接读图中的像素值了,这样同样可以获得到某一个点的颜色值了。

在 VC++ 中,可以使用 MFC 库提供的 CImage 类来判断是否为空白以及读取当前大小

判断是否为空白

要判断一张是否为空白,可以使用 CImage 类的 GetSize() 方法获取的大小,然后遍历的每个像素点,判断像素点的 RGB 值是否为 255(即白色)。如果所有像素点的 RGB 值都为 255,则说明该为空白。

示例代码如下:

CImage image;

imageLoad(_T("testjpg")); // 加载

// 获取大小

int width = imageGetWidth();

int height = imageGetHeight();

bool isBlank = true; // 是否为空白

// 遍历每个像素点

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

// 获取像素点的 RGB 值

COLORREF color = imageGetPixel(i, j);

int r = GetRValue(color);

int g = GetGValue(color);

int b = GetBValue(color);

// 判断像素点的 RGB 值是否为白色

if (r != 255 || g != 255 || b != 255) {

isBlank = false;

break;

}

}

if (!isBlank) {

break;

}

}

if (isBlank) {

// 空白

}

else {

// 非空白

}

上述代码中,我们首先使用 CImage 类的 Load() 方法加载了一张,然后使用 GetSize() 方法获取了的大小。接着,我们使用双重循环遍历了的每个像素点,并判断像素点的 RGB 值是否为白色。如果所有像素点的 RGB 值都为白色,则将 isBlank 标记为 true,否则将其标记为 false。最后,根据 isBlank 的值来判断是否为空白。

需要注意的是,这种判断方式并不是非常准确,因为有可能存在非常浅的颜色(比如灰色)或者透明度不为 0 的像素点。因此,判断是否为空白需要根据具体的应用场景进行具体分析和处理。

读取当前大小

要读取一张的大小(即占用硬盘容量大小),可以使用 CImage 类的 GetFileSize() 方法获取。该方法返回的是占用硬盘容量大小(单位为字节),需要将其转换为 KB 才能表示为人类可读的格式。

示例代码如下:

CImage image;

imageLoad(_T("testjpg")); // 加载

// 获取大小(单位为字节)

int fileSize = imageGetFileSize();

// 转换为 KB

double fileSizeKB = fileSize / 10240;

// 输出大小(保留两位小数)

printf("The size of the image is %2f KB\n", fileSizeKB);

以上就是关于用VC如何获得正在播放的视频中某一点的颜色数据全部的内容,包括:用VC如何获得正在播放的视频中某一点的颜色数据、VC 如何获得Picture控件的图片的指针信息,我现在获得的rgb不对。、VC 获取24位真彩色的个点RGB分量值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10099829.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存