打算实现adas的一个报警显示,白色字体变成红色,可是字体是中文,不可以用cv的函数。先放个图片看看最后的效果。
import cv2
path = r"C:\Users\17230\Desktop\123.png"
img = cv2.imread(path)
# 先将白底黑字(ppt里面的截图)转换成黑底白字
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
thred3,img= cv2.threshold(img_gray,254,255,cv2.THRESH_TOZERO_INV)
img = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
# 如果白色字体太细,可以进行膨胀
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
img = cv2.dilate(img2,kernel,iterations = 1)
# 再将白字变成红字
b,g,r = cv2.split(img)
b[20:140] = 0
g[20:140] = 0
img = cv2.merge((b,g,r))
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
找切片位置:在通道分离之后设置断点调试,查看某一个通道在什么位置开始变色的,在什么位置结束变色
另外的思路就是,直接查看图像像素数值,查看感兴趣区域像素分布,根据这个分布设置最大值和最小值,大于最大值的直接变为0(或者其他,变蓝色底或者其他底色),小于最小值同样
import cv2
path = r"C:\Users\17230\Desktop\123.png"
img = cv2.imread(path)
# 括号里面的计算结果为零一矩阵,再乘以原图像
img = (img<200)*img
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()