数学心_第五百七十六章 同伦群周期性 首页

字体:      护眼 关灯

上一页 目录 下一章

   第五百七十六章 同伦群周期性 (第2/2页)

修复程序处理二的搭建

    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库中的cv2.cvtColor()函数,将RGB图像(在opencv中设计BGR图像)转换为HSV图像用到了参数cv2.COLOR_BGR2HSV。

    详细代码如下:

    importcv2

    importos

    importnumpyasnp

    sta=0

    forfileinos.listdir(“cut_test“):

    sta=sta 1

    print(“正在处理“ “cut_test/“ file)

    img=cv2.imread(“cut_test/“ file)

    #img=cv2.imread(‘1.jpg‘)

    rows,cols,channels=img.shape

    cropped=img[0:479,0:cols]

    #转换hsv

    hsv=cv2.cvtColor(cropped,cv2.COLOR_BGR2HSV)

    #图片二值化处理,把[240,240,240]~[255,255,255]以外的颜色变成0

    thresh=cv2.inRange(hsv,np.array([90,10,125]),np.array([135,180,255]))

    erode=cv2.erode(thresh,None,iterations=2)

    dilate=cv2.dilate(erode,None,iterations=0)

    #创建形状和尺寸的结构元素

    kernel=np.ones((3,3),np.uint

    2、图像修复:

    在扩张修复区域的基础上外加调整像素值图片处理。

    其中腐蚀cao作详细如下:

    定义了一个十字形结构元素其实是一个矩阵,我们知道在图片的腐蚀过程,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”cao作,如果都为1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像减小一圈。使用的函数:cv2.erode(img,kernel);

    膨胀cao作详细如下:

    使用同样的结构,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”cao作,如果出现1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像扩大一圈。使用的函数:cv2.dilate(img,kernel)

    详细代码如下:

    #扩张待修复区域

    hi_mask=cv2.dilate(dilate,kernel,iterations=1)

    specular=cv2.inpaint(cropped,hi_mask,-5,flags=cv2.INPAINT_NS)

    #合并

    htich=np.vstack((specular,img[479:rows,0:cols]))

    ‘

    blue=[]

    #获取mask,调整lower中h控制颜色

    lower_blue=np.array([90,10,125])

    upper_blue=np.array([135,180,255])

    mask=cv2.inRange(hsv,lower_blue,upper_blue)

    erode=cv2.erode(mask,None,iterations=1)

    dilate=cv2.dilate(erode,None,iterations=1)

    #腐蚀膨胀

    erode=cv2.erode(mask,None,iterations=1)

    cv2.imshow(‘erode‘,erode)

    dilate=cv2.dilate(erode,None,iterations=1)

    cv2.imshow(‘dilate‘,dilate)

    foriinrange(rows):

    forjinrange(cols):

    ifdilate[i,j]==255:

    blue.append([i,j])

    forwinblue:

    x=w[0]

    y=w[1]

    img[x,y]=[255,255,255]

    ‘

    cv2.imwrite(“dels_test/“ str(sta) “.jpg“,htich)

    ‘

    cv2.imshow(‘Mask‘,img)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

    ‘

加入书签 我的书架

上一页 目录 下一章