python - OpenCV Python如何保持一种颜色,就像将图像转换为灰度一样
解决方案
您可以通过使用bitwise_and()
函数和thresholding
. 脚步:
mask
为所需区域生成。(此处thresholding
使用但也可以使用其他方法)regions
使用bitwise_and
(图像和掩码)提取所需。- 添加
masked regions
以获取输出。
这是示例代码:
import cv2
import numpy as np
img = cv2.imread('input.jpg')
# creating mask using thresholding over `red` channel (use better use histogram to get threshoding value)
# I have used 200 as thershoding value it can be different for different images
ret, mask = cv2.threshold(img[:, :,2], 200, 255, cv2.THRESH_BINARY)
mask3 = np.zeros_like(img)
mask3[:, :, 0] = mask
mask3[:, :, 1] = mask
mask3[:, :, 2] = mask
# extracting `orange` region using `biteise_and`
orange = cv2.bitwise_and(img, mask3)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)
# extracting non-orange region
gray = cv2.bitwise_and(img, 255 - mask3)
# orange masked output
out = gray + orange
cv2.imwrite('orange.png', orange)
cv2.imwrite('gray.png', gray)
cv2.imwrite("output.png", out)
结果:
蒙面的橙色图像
蒙版灰度图像
输出图像
推荐阅读
- ubuntu - 乌尔都语和信德语缺少几个字符
- c# - 如何在.net核心中反序列化这个Json?
- firebase - FCM:有效负载数据的总大小 (4096) - 这在 HTTP v1 中是否仍然相同?
- python-3.x - 如何在python中找到两个熊猫系列的元素平均平均值?
- django - TypeError:上下文必须是字典而不是 JsonResponse
- java - 如何生成整数数字的平方
- hadoop - 无法使用 select * 命令查看 hive 托管表数据
- node.js - 如何从公钥生成 bech32 地址?比特币
- c# - 将模型转换为动态,设置新属性并返回为 camelCased json
- c - 为什么这个循环运行 10 次而不是 5 次