oyallwindows()
修复程序处理二的搭建
1、图像处理第二步:
转换成hsv值,根据hsv值判断图片的前景和后景。hsv是一种将rgb色彩空间中的点在倒圆锥体中的表示方法。hsv即色相(hue)、饱和度(saturation)、明度(value),又称hsb(b即brightness)。色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等。饱和度(s)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。明度(v),取0-max(计算机中hsv取值范围和存储的长度有关)。hsv颜色空间可以用一个圆锥空间模型来描述。圆锥的顶点处,v=0,h和s无定义,代表黑色。圆锥的顶面中心处v=max,s=0,h无定义,代表白色。其中主要用到的函数是cv2库中的color()函数,将rgb图像(在opencv中设计bgr图像)转换为hsv图像用到了参数or_bgr2hsv。
详细代码如下:
importcv2
importos
importnumpyasnp
sta=0
tdir(“cut_test“):
sta=sta1
print(“正在处理““cut_test/“file)
img=ead(“cut_test/“file)
#img=ead(‘‘)
rows,cols,channels=pe
cropped=img[0:479,0:cols]
#转换hsv
hsv=color(cropped,or_bgr2hsv)
#图片二值化处理,把[240,240,240]~[255,255,255]以外的颜色变成0
thresh=ange(hsv,ay([90,10,125]),ay([135,180,255]))
erode=de(thresh,none,iterations=2)
dilate=ate(erode,none,iterations=0)
#创建形状和尺寸的结构元素
kernel=s((3,3),t
2、图像修复:
在扩张修复区域的基础上外加调整像素值图片处理。
其中腐蚀操作详细如下:
定义了一个十字形结构元素其实是一个矩阵,我们知道在图片的腐蚀过程,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”操作,如果都为1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像减小一圈。使用的函数:de(img,kernel);
膨胀操作详细如下:
使用同样的结构,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”操作,如果出现1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像扩大一圈。使用的函数:ate(img,kernel)
详细代码如下:
#扩张待修复区域
hi_mask=ate(dilate,kernel,iterations=1)
specular=aint(cropped,hi_mask,-5,flags=aint_ns)
#合并
htich=ack((specular,img[479:rows,0:cols]))
‘
blue=[]
#获取mask,调整lower中h控制颜色
lower_blue=ay([90,10,125])
upper_blue=ay([135,180,255])
mask=ange(hsv,lower_blue,upper_blue)
erode=de(mask,none,iterations=1)
dilate=ate(erode,none,iterations=1)
#腐蚀膨胀
erode=de(mask,none,iterations=1)
how(‘erode‘,erode)
dilate=ate(erode,none,iterations=1)
how(‘dilate‘,dilate)
foriinrange(rows):
forjinrange(cols):
ifdilate[i,j]==255:
end([i,j])
forwinblue:
x=w[0]
y=w[1]
img[x,y]=[255,255,255]
‘
rite(“dels_test/“str(sta)“jpg“,htich)
‘
how(‘mask‘,img)
tkey(0)
troyallwindows()
‘