如何去除图片中的一些颜色标注呢,如下图:
我们首先会想到PS,通过调整图像的RGB通道,对比度与清晰度的方式来实现,在最开始时博主也是这样做的,效果如下:
可以看到,其效果不太号,依旧有阴影出现(当然也是因为我PS技术太烂了,一点一点P我属实没有耐心)
那么如果计算机视觉中的一些方法能够有效解决吗,这里我们根据最终的效果来看,就是让蓝色标注变为白色即可,首先博主想到可以使用图像阈值的方法来解决,即设定一个阈值,超出的就设置为白色,否则就为黑色,那么该如何实现呢,有下面几种方法:
首先是我们自己来完全编写这个程序,我们可以通过读取图像每个像素点的方式来判断,最终按照阈值设置颜色,代码如下:
import os
from PIL import Image
path="images/"
files=os.listdir(path)
for i,file in enumerate(files):
img=Image.open(path+file)
for w in range(img.width):
for h in range(img.height):
if(img.getpixel((w,h))[1]>180):
img.putpixel((w, h),(255, 255, 255))
else :
img.putpixel((w, h), (0, 0, 0))
img.convert('RGB') #转换为RGB格式
img.save('result/'+str(i)+'.jpg')
效果如下,我们可以看到,效果还是不错的,我们只需要调整合适阈值即可
但这个方法实现起来比较慢
因此,我们也可以选择使用OpenCV中的阈值函数来实现,其实现过程更简单,效果也还可以:
import cv2 as cv
img = cv.imread('images/1.jpg',0)
ret,thresh1 = cv.threshold(img,140,255,cv.THRESH_BINARY)
cv.imwrite("img.jpg",thresh1)