python - 转换像素颜色会产生噪点
问题描述
只是一个简单的问题:我正在加载黑白图像,然后用其他颜色替换黑色和/或白色像素。问题是当我可视化编辑后的图像时,白色部分周围有一些黑色像素,如噪声。
输入图像:
这是我遍历像素的方式:
img1_black[np.where((img1_black == [0, 0, 0]).all(axis=2))] = [0, 255, 0]
cv2.imshow("Result4", img1_black)
第二种迭代方法:
img1_black_pixels_mask = np.all(mask_1 == [0, 0, 0], axis=-1)
img1_non_black_pixels_mask = np.any(mask_1 != [0, 0, 0], axis=-1)
img1_black[img1_black_pixels_mask] = [0, 0, 255]
img1_black[img1_non_black_pixels_mask] = [0, 255, 0]
plt.imshow(img1_black)
plt.show()
第一个输出图像
第二个输出图像
解决方案
这将对您有所帮助。
import cv2
import numpy as np
image = cv2.imread("pmjpl.jpg")
gray_scale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, threshold_image = cv2.threshold(gray_scale, 100, 255, cv2.THRESH_BINARY)
cv2.imshow("threshold_image", threshold_image)
colour_image = cv2.cvtColor(threshold_image, cv2.COLOR_GRAY2BGR)
mask = colour_image[:, :, 0] == 255 # mask for white pixels
colour_image[mask] = [0, 0, 255] # fill red colour for white pixels
mask = colour_image[:, :, 2] == 0 # mask for black pixels
colour_image[mask] = [0, 255, 0] # fill green colour for white pixels
cv2.imshow("colour_image", colour_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
推荐阅读
- laravel - Laravel 5.7:Eloquent orderBy 相关模型以及使用 whereHas 条件
- php - 如何通过jquery AJAX调用特定的php函数
- angular - Firebase 未部署
- google-analytics - BigQuery 转化率计算不正确
- sql - 在 posgresql 断言消息中包含参数
- c++ - 带有嵌套循环和二维数组的 C++ 赋值
- jquery - Materialise 日历有额外的空间
- json - JSON 模式到 JSON 对象
- sql - 通过多参数获取结果
- python - 如果我们可以通过简单的打印方法获得结果,为什么还要在类中使用函数?