泛洪填充 均值模糊,中值模糊,锐化 高斯模糊

ROI 泛洪填充

import cv2 as cv
import numpy as np

def fill(image):
    copyImg=image.copy()
    h,w=image.shape[:2]
    mask=np.zeros([h+2,w+2],np.uint8)#规定这么大
    cv.floodFill(copyImg,mask,(30,30),(0,0,255),(100,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE)#FLOODFILL_FIXED_RANGE 改变图像,泛洪填充
    cv.imshow('fill',scr)
    #两点填充
def fill2():
    #创建一个图像
    image=np.zeros([400,400,3],np.uint8)
    image[100:300,100:300,:]=255
    #mask
    mask=np.ones([402,402,1],np.uint8)
    mask[101:301,101:301,:]=0
    cv.floodFill(image,mask,(200,200),(0,0,255),cv.FLOODFILL_MASK_ONLY)#FLOODFILL_MASK_ONLY 不改变图像,只填充遮罩层本身,忽略新的颜色值参数
    cv.imshow('fill2',image)



scr= cv.imread('D:/fengge.jpg')
#ROI  用来合并图像
sun= scr[0:123,230:255]
gray=cv.cvtColor(sun,cv.COLOR_BGR2GRAY)
back=cv.cvtColor(gray,cv.COLOR_GRAY2BGR)
cv.imshow('sun',back)
cv.imshow('fengge',scr)
fill(scr)
fill2()
cv.waitKey(0)

均值模糊,中值模糊,锐化

# 模糊操作原理:
# 1.基于卷积
# 2.定义好每个卷积核
# 3.不同卷积核得到不同的卷积效果
# 4.模糊是卷积的一种表象
import cv2 as cv
import numpy as np
def blur_demo(img):  #均值模糊
    dst=cv.blur(img,(5,5))

    cv.imshow('blur',dst)
def blur_demo2(img): #中值模糊  可以去除椒盐噪声
    dst2=cv.medianBlur(img,5)
    cv.imshow('blur2', dst2)

def custom_blur_demo(img):
    kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)
    dst3=cv.filter2D(img,-1,kernel=kernel)#锐化 更有立体感  横向mask
    cv.imshow('锐化',dst3)



scr=cv.imread('D:/bright.jpg')
cv.imshow('bright',scr)
blur_demo(scr)
blur_demo2(scr)
custom_blur_demo(scr)
cv.waitKey(0)

高斯模糊

import cv2 as cv
import numpy as np
def clamp(pv):
    if pv>255:
        return 255
    if pv<0:
        return 0
    else:
        return pv

def gaussian_noise(img):  #高斯模糊
    h,w,c=img.shape
    for row in range(h):
        for col in range(w):
            s=np.random.normal(0,20,3)
            b=img[row,col,0] #blue
            g= img[row, col, 1]  # green
            r = img[row, col, 2]  # red
            img[row, col, 0]=clamp(b+s[0])
            img[row, col, 1] = clamp(g + s[1])
            img[row, col, 2] = clamp(r + s[2])


scr=cv.imread('D:/bright.jpg')
t1=cv.getTickCount()
#gaussian_noise(scr)
t2=cv.getTickCount()
time=(t2-t1)/cv.getTickFrequency()
print('time : %s'%(time*1000))
dst=cv.GaussianBlur(scr,(0,0),15)  #高斯模糊,毛玻璃效果 (x,y),四伽马) 只改变其中一个
# dst=cv.GaussianBlur(scr,(5,1),0)
cv.imshow('gussianblur',dst)
cv.imshow('bright',scr)
cv.waitKey(0)
发布了31 篇原创文章 · 获赞 0 · 访问量 2674

猜你喜欢

转载自blog.csdn.net/kaxiaokui/article/details/104895953