请教一个关于颜色识别的问题

olderboy 2008-03-11 09:19:15
请问一下如何用 getpixel 提取一幅图片中指定区域的象素值,然后把它的值分别存放在R,G,B三个分量中.对这个区域中的所有R,G,B分量分别求它们的平均值? 拜托路过的高手帮忙给指点一下,关键是动态取值然后求它的平均值.先谢谢了```
...全文
122 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
olderboy 2008-03-17
  • 打赏
  • 举报
回复
非常感谢楼上大虾的热心帮助,我的问题已经解决了..谢谢```
lyserver 2008-03-15
  • 打赏
  • 举报
回复
既然是取指定区域的象素值,最好不要使用getpixel(效率太低),可以采取先复制指定区域的图象(BitBlt)到一个缓冲绘图设备上下文(DC)中,然后使用GetBitmapBits取得图象的象素值数组,该数组包含了指定区域每个象素的R\G\B分值,接下来循环求得每个象素的分值就可以了.
当然,如果区域为不规则形状,使用getpixel也可以.
两种方法返回的R\G\B分值都是一个LONG变量,可通过移位(或模拟移位)运算或使用memcopy转换为BYTE类型即可.
以GetPixel为例:
Option Explicit

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()
Dim lRGB As Long
Dim bRGB(1 To 4) As Byte
Dim bAvg As Byte '平均值

Me.AutoRedraw = True '注意,必须增加此句,否则得不到正确的RGB值。
lRGB = GetPixel(Me.hdc, 2, 2) '取窗口坐标(2,2)的象素
CopyMemory bRGB(1), lRGB, 4
bAvg = (bRGB(1) + bRGB(2) + bRGB(3) + bRGB(4)) / 4 '计算RGB平均值
Debug.Print bRGB(1), bRGB(2), bRGB(3), bRGB(4), lRGB, bAvg
End Sub

你可以改变Form的背景颜色试一试,图片的道理是一样的。
【源码免费下载链接】:https://renmaiwang.cn/s/h694t OpenCV(开源计算机视觉库)是一个功能强大的开源工具库,主要用于图像处理和计算机视觉相关的开发工作。它在机器学习、深度学习以及人工智能领域中得到了广泛应用,为开发者提供了丰富的API接口,支持C++, Python, Java等多种编程语言实现。OpenCV的官方网站是获取最新版本软件包、技术文档、示例代码以及社区资源的重要平台之一。用户可以在官网找到不同操作系统版本的安装文件下载,包括Windows、Linux和macOS系统版本。官方下载页面通常提供稳定版和开发版两种可选下载方式,其中稳定版更适合日常应用环境中的使用需求,而开发版则包含了最新的功能改进和技术突破,特别适合研究人员和技术探索者使用。压缩包文件中可能包含如"settings_c.zip.iw5"和"settings_s.zip.iw5"之类的设置文件压缩包,这些文件通常用于存储用户配置信息或特定程序的设置参数。说明.txt文本文档很可能是对压缩文件集合进行简要介绍,并附带安装或使用指南,帮助用户了解如何解压、安装以及合理利用这些资源。游迅网_Yxdown.com.URL可能是一个与软件下载相关的外部链接,其中包含官方下载网站的相关信息或其他推广内容。OpenCV提供了大量用于图像处理的功能模块,涵盖图像读取、显示与编辑、颜色空间转换、滤波操作、边缘检测等基本功能。此外,它还支持视频分析、目标识别(包括人脸识别)、三维重建、光学字符识别等多个高级计算机视觉应用场景。对于初学者而言,OpenCV官网提供的教程和示例代码是一个非常有价值的学习资源。通过研究这些案例,用户可以快速掌握如何利用OpenCV进行图像处理及相关开发工作。同时,OpenCV拥有活跃的在线社区,在论坛等平台中用户可以向他人请教问题、分享使用经验并获取专业解答

1,065

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧