Python中文
首页
教程
问答
标签
搜索
登录
注册
Python-找到相似的颜色,最好的方法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我已经创建了一个函数来查找图像中的颜色,并返回x,y。现在我需要添加一个新函数,在这里我可以找到具有给定公差的颜色。应该很容易吗?</p> <p>在图像中查找颜色并返回x,y的代码:</p> <pre><code>def FindColorIn(r,g,b, xmin, xmax, ymin, ymax): image = ImageGrab.grab() for x in range(xmin, xmax): for y in range(ymin,ymax): px = image.getpixel((x, y)) if px[0] == r and px[1] == g and px[2] == b: return x, y def FindColor(r,g,b): image = ImageGrab.grab() size = image.size pos = FindColorIn(r,g,b, 1, size[0], 1, size[1]) return pos </code></pre> <hr/> <p><strong>结果:</strong></p> <p>从答案中可以看出,比较两种颜色的常用方法是欧几里德距离或切比雪夫距离。</p> <p>我决定主要使用(平方)欧几里德距离和多个不同的颜色空间。实验室、deltaE(LCH)、XYZ、HSL和RGB。在我的代码中,大多数颜色空间使用平方欧氏距离来计算差异。</p> <p>例如LAB,RGB和XYZ是一个简单的平方euc。距离就是诀窍:</p> <pre><code>if ((X-X1)^2 + (Y-Y1)^2 + (Z-Z1)^2) <= (Tol^2) then ... </code></pre> <p>LCH和HSL都有一个圆柱形的色调,所以有点复杂,但是一些数学方法解决了这个问题,然后开始使用平方eucl。这里也是。</p> <p>在大多数情况下,我为每个通道的公差添加了“单独的参数”(使用1个全局公差和可选的“修饰符”<code>HueTol := Tolerance * hueMod</code>或<code>LightTol := Tolerance * LightMod</code>)。</p> <hr/> <p>似乎在XYZ(LAB,LCH)之上构建的颜色空间在我的许多场景中都表现得最好。在某些情况下,这种HSL会产生很好的效果,从RGB转换成RGB要便宜得多,RGB也是一种很好的方法,可以满足我的大部分需求。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>假设rtol、gtol和btol分别是r、g和b的公差,为什么不:</p> <pre><code>if abs(px[0]- r) <= rtol and \ abs(px[1]- g) <= gtol and \ abs(px[2]- b) <= btol: return x, y </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
使用登录请求.post导致“错误405不允许”
4 回答
使用登录进行Python web抓取
6 回答
使用登录进行抓取
4 回答
使用登录页面从网站抓取数据
3 回答
使用白色圆圈背景使图像更平滑
3 回答
使用百分位数删除Pandas数据帧中的异常值
6 回答
使用百分号进行Python字典操作
6 回答
使用百分比delimi的Python字符串模板
8 回答
使用百分比分割Numpy ndarray最有效的方法是什么?
7 回答
使用百分比分配和修改变量(计算)
8 回答
使用百分比单位绘制数据
6 回答
使用百分比在单个采购订单中组合不同的订单类型
5 回答
使用百分比将数据帧的子集与完整数据帧进行比较
4 回答
使用百分比形式的BBOX选项,而不是绝对像素PyScreenShot Python
7 回答
使用百分比登录列nam更新表
7 回答
使用百分比登录操作系统或者os.popen公司
6 回答
使用百分比计算:十进制还是可读?
6 回答
使用的dataset和dataloader加载数据时出错torch.utils.data公司. TypeError:类型为“type”的对象没有len()
1 回答
使用的Json无效json.dump文件在Python3
9 回答
使用的overwrite方法\r在python 3[PyCharm]中不起作用
3 回答