美文网首页
opencv+python学习记录(十三)中值平滑

opencv+python学习记录(十三)中值平滑

作者: 三味菜551 | 来源:发表于2019-05-19 13:05 被阅读0次

中值平滑指对邻域中的像素点按灰度值进行排序,然后选择该组的中值作为输出的灰度值。

opencv提供的函数cv2.medianBlur(img, N)。

# -*-coding:utf-8-*-

import cv2 as cv

import numpy as np

import random

def salt(image,number):

    image= cv.cvtColor(image, cv.COLOR_BGR2GRAY)

    rows, cols= image.shape

    saltImage= np.copy(image)

    for i in range(number):

        randR= random.randint(0, rows-1)

        randC= random.randint(0, cols-1)

        saltImage[randR][randC]= 122

    return saltImage

def medianBlur(image1,winSize):

    # image1 = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

        rows, cols= image1.shape

        winH, winW= winSize

        halfWinH= (winH-1)//2

        halfWinW= (winW-1)//2

        medianBlurImage= np.zeros(image1.shape,image1.dtype)

for rin range(rows):

        for cin range(cols):

            rTop= 0 if r-halfWinH< 0 else r-halfWinH

            rBottom= rows- 1 if r+ halfWinH> rows-1 else r+halfWinH

            cLeft= 0 if c-halfWinW< 0 else c-halfWinW

            cRight= cols- 1 if c+halfWinW> cols- 1 else c+halfWinW

            region= image1[rTop:rBottom+ 1, cLeft:cRight+ 1]

            medianBlurImage[r][c]= np.median(region)

return medianBlurImage

if __name__== "__main__":

    print("---------------Hello python ------------")

    filename= ("polar.jpg")

    src= cv.imread(filename)

    cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)

    cv.imshow("input image", src)

    src1= salt(src,1000)

    cv.imshow("src1", src1)

    medianBlurImage= medianBlur(src1, (3,3))

    cv.imshow("medianBlur", medianBlurImage)

    cv.waitKey(0)

    cv.destroyAllWindows()

可学习的网址:https://www.cnblogs.com/my-love-is-python/p/10391923.html

相关文章

网友评论

      本文标题:opencv+python学习记录(十三)中值平滑

      本文链接:https://www.haomeiwen.com/subject/mgofzqtx.html