遇到的问题:
不使用阈值分割,更改特定颜色区域的颜色,例如 -> 红色数据点替换成蓝色。
解决办法:
由于数据图片不方便展示,所以随便找了张图做演示。 将图片的蓝色背景改为其他颜色。 逐一遍历每个像素点,设定像素筛选条件,例如背景是蓝色:img[i,j,0] > 200 # b通道值高,筛选过后直接替换像素颜色。 在matlab中的实现方法: 传送门:
import cv2 as cv
img = cv.imread(r.maple.png)
cv.imshow(maple, img)
h, w, ch = img.shape # 图像的高,宽,通道数
color = [238, 104, 123] # 新颜色,bgr
for i in range(h):
for j in range(w):
if img[i, j, 0] >= 200: # 如果b通道值大于200,说明找到了目标背景色,那么就给bgr三通道赋新值
img[i, j, 0] = color[0]
img[i, j, 1] = color[1]
img[i, j, 2] = color[2]
cv.imshow(newmaple, img)
cv.waitKey(0)
Result: