首页 > 解决方案 > 转换像素颜色会产生噪点

问题描述

只是一个简单的问题:我正在加载黑白图像,然后用其他颜色替换黑色和/或白色像素。问题是当我可视化编辑后的图像时,白色部分周围有一些黑色像素,如噪声。

输入图像: 输入图像

这是我遍历像素的方式:

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()

第一个输出图像 输出图像

第二个输出图像 第二个输出图像 2

标签: pythonnumpyopencvmatplotlibcomputer-vision

解决方案


这将对您有所帮助。

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()

阈值图像 clolur_image


推荐阅读