原理很简单 比如你图片上的数字都带有绿色 我们想要把这些数字都分割出来 那么 按列查找绿色 找到了 就认为是边界 记录下来 然后开始找结尾边界 如果一列全部没有绿色 那么就说明是数字的结尾 把结尾记录下来 然后重新查找新的边界 .... 最后返回一个数组 [开始x,结束x,开始x,结束x,...]
说明一下rgb 范围 就是说你要查找的找个颜色的rgb的最小和最大值的范围 在这个范围内 都算做你的目标 否则就不是 这样分割图片很稳定 基本不会翻车
fpby(pa,rgb):#(路径, rgb范围[r最小,r最大,g最小,g最大,b最小,b最大,])
完整代码
import cv2
def fpby(pa,rgb):#(路径/img数组 , rgb范围[r最小,r最大,g最小,g最大,b最小,b最大,])
if type(pa) == str:
img = cv2.imread(pa)
else:
img = pa
# img = img.T
ss = img.shape
# print(img.shape)
bj = 0#0是未找到边界 1是已经找到 开始找结尾
f = []
for i in range(ss[1]) :
# print(i)
zd = 0
for ii in range(ss[0]) :
pb = img[ii][i]
if rgb[0] <= pb[2] <= rgb[1] and rgb[2] <= pb[1] <= rgb[3] and rgb[4] <= pb[0] <= rgb[5] :#