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)
cv.imshow('fill',scr)
def fill2():
image=np.zeros([400,400,3],np.uint8)
image[100:300,100:300,:]=255
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)
cv.imshow('fill2',image)
scr= cv.imread('D:/fengge.jpg')
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)
均值模糊,中值模糊,锐化
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)
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]
g= img[row, col, 1]
r = img[row, col, 2]
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()
t2=cv.getTickCount()
time=(t2-t1)/cv.getTickFrequency()
print('time : %s'%(time*1000))
dst=cv.GaussianBlur(scr,(0,0),15)
cv.imshow('gussianblur',dst)
cv.imshow('bright',scr)
cv.waitKey(0)