python-3.x - 将特定范围内的所有BGR值转换为白色(255,255,255)
问题描述
我输入了 png 图像,我想将属于特定范围的所有像素从 (2,2,2) 到 (255,255,255) 转换为白色 (255,255,255)
im = cv2.imread('3.png') # I am reading the image
lower_range = np.array([2,2,2]). # I specific the lower range
upper_range = np.array([255,255,255]) # I specify the upper range
im[np.where((im == [0,0,255]).all(axis = 2))] = [255,255,255] # converts all red pixels to white
cv2.imwrite('out.png', im)
我的问题是如何修改 im[np.where((im == [0,0,255]).all(axis = 2))] = [255,255,255]
. 这样它就覆盖了第 2 行和第 3 行中提到的颜色范围,并将它们全部转换为白色。
解决方案
有cv2.inRange会产生一个蒙版,可用于根据需要更改颜色。
mask1 = cv2.inRange(im, lower_range, upper_range)
im[np.where(mask)] = [255,255,255]
附带说明一下,您的颜色范围非常大(几乎涵盖了所有内容)。
推荐阅读
- deployment - 许多 Scrum 团队中多阶段环境中的 CI 管道
- json - 如何解决在 null 上调用了方法“[]”。飘飘然
- php - PHP 的最大二进制类型大小
- r - 如何确定 R 中 LARGE data.table 的两列中最长的公共子字符串
- java - PKIX 路径构建失败 - GRADLE(无法找到请求目标的有效证书路径)
- algorithm - 图中的负循环和正循环是什么?
- wso2 - WSO2 API Analytics - 如何故意调用异常请求模式
- firebase - 如何在 Kotlin Android 的 Recycler View 中修复这个问题
- html - [HTML]:带有身份验证的视频标签
- r - 在ggplot中拟合一条对角线以绘制图形