获取指定颜色数量 - GetColorNum
函数简介
查找指定区域内符合指定颜色范围的所有颜色数量。此函数可以统计指定区域中符合特定颜色范围的像素点数量,适用于图像分析、颜色统计等场景。
ColorModel:
颜色每个通道单独计算范围,如颜色范围位3278FA,6496FF,实际对应R(50~100) G(120 ~150) B(250 ~255)
支持ARGB模式如#FFFFFFFF
支持反色模式,交集并集查询颜色
- 0: 正常匹配,保留在颜色范围内的像素
- 1: 反色匹配,保留在颜色范围外的像素
- 2: 正常交集匹配,保留在颜色范围内的像素取交集
- 3: 反色交集匹配,保留在颜色范围外的像素取交集 如{"StartColor": "3278FA", "EndColor": "6496FF","Type":0}
x1 , y1, x2, y2传 0, 0, 0, 0 为窗口整个客户区
接口名称
GetColorNum
DLL调用
int GetColorNum(long ola, int x1, int y1, int x2, int y2, string colorList)
参数定义:
ola
(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。x1
(整型数): 查找区域的左上角X坐标y1
(整型数): 查找区域的左上角Y坐标x2
(整型数): 查找区域的右下角X坐标y2
(整型数): 查找区域的右下角Y坐标colorList
(字符串): 颜色列表的json字符串,如: [{"StartColor": "3278FA", "EndColor": "6496FF","Type":0}, {"StartColor": "3278FA", "EndColor": "6496FF","Type":1}]
示例:
// 在指定区域查找白色像素点数量
string colorList = "[{\"StartColor\": \"FFFFFF\", \"EndColor\": \"FFFFFF\", \"Type\": 0}]";
int count = GetColorNum(ola, 100, 100, 200, 200, colorList);
printf("找到白色像素点数量:%d\n", count);
// 在指定区域查找多个颜色范围的像素点数量
string colorList = "[{\"StartColor\": \"3278FA\", \"EndColor\": \"6496FF\", \"Type\": 0}, {\"StartColor\": \"FF0000\", \"EndColor\": \"FF0000\", \"Type\": 0}]";
int count = GetColorNum(ola, 0, 0, 0, 0, colorList); // 在整个客户区查找
printf("找到符合颜色范围的像素点数量:%d\n", count);
COM调用
int GetColorNum(int x1, int y1, int x2, int y2, string colorList)
参数定义:
x1
(整型数): 查找区域的左上角X坐标y1
(整型数): 查找区域的左上角Y坐标x2
(整型数): 查找区域的右下角X坐标y2
(整型数): 查找区域的右下角Y坐标colorList
(字符串): 颜色列表的json字符串,如: [{"StartColor": "3278FA", "EndColor": "6496FF","Type":0}, {"StartColor": "3278FA", "EndColor": "6496FF","Type":1}]
示例:
# 在指定区域查找白色像素点数量
colorList = '[{"StartColor": "FFFFFF", "EndColor": "FFFFFF", "Type": 0}]'
count = ola.GetColorNum(100, 100, 200, 200, colorList)
messagebox("找到白色像素点数量:" + str(count))
# 在指定区域查找多个颜色范围的像素点数量
colorList = '[{"StartColor": "3278FA", "EndColor": "6496FF", "Type": 0}, {"StartColor": "FF0000", "EndColor": "FF0000", "Type": 0}]'
count = ola.GetColorNum(0, 0, 0, 0, colorList) # 在整个客户区查找
messagebox("找到符合颜色范围的像素点数量:" + str(count))
返回值
整型数: 返回指定区域内符合颜色范围的像素点数量。如果失败返回0。
注意事项
- 颜色范围使用RRGGBB格式,每个通道单独计算范围
- 支持ARGB模式,如#FFFFFFFF
- 颜色匹配类型说明:
- 0: 正常匹配,保留在颜色范围内的像素
- 1: 反色匹配,保留在颜色范围外的像素
- 2: 正常交集匹配,保留在颜色范围内的像素取交集
- 3: 反色交集匹配,保留在颜色范围外的像素取交集
- 坐标范围必须有效,否则可能导致程序异常
- 颜色列表格式必须正确,否则可能导致程序异常
- 使用反色模式时,会统计不在指定颜色范围内的点
- 使用交集模式时,需要同时满足所有颜色条件
- 使用并集模式时,满足任一颜色条件即可
- 如果区域较大,统计过程可能需要一定时间
- 建议在统计大区域时注意性能影响