#对图片指定部位进行马赛克处理 import cv2 import numpy as np img = cv2.imread('image0.jpg', 1) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] #定义马赛克窗体范围 for m in range(100, 300): for n in range(100, 200): #使用矩形的小马赛克,使用矩阵10*10的像素代替矩阵的其他像素点,pixel->10*10 if m % 10 == 0 and n % 10 == 0: for i in range(0, 10): for j in range(0, 10): (b, g, r) = img[m, n] img[i + m, j + n] = (b, g, r) cv2.imshow('dst', img) cv2.waitKey(0) #对图片进行毛玻璃特效处理 #与马赛克不同的是,毛玻璃是用周围随机的像素点替换 import cv2 import numpy as np import random #加载图片,读取信息 img = cv2.imread('image0.jpg', 1) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] #定义一个矩阵,3代表颜色通道 dst = np.zeros((height,width,3),np.uint8) mm = 8 #遍历当前像素矩阵的像素点 #height-mm,width-mm,是为了防止目标像素点超出图片范围,例如(height+mm,width+mm) for m in range(0, height - mm): for n in range(0, width - mm): #随机生成0-8的随机数 index = int(random.random()*8) #使用目标像素点周围的像素点的像素 (b, g, r) = img[m+index, n+index] dst[m, n] = (b, g, r) cv2.imshow('dst', dst) #右边和下边的行会有mm*height,mm*width的像素黑条,双重循环条件未遍历,默认像素为0,0为黑色 cv2.waitKey(0) #对图片进行融合 #每种图片采用一个比例系数,然后直接融合的方式 dst = img1*a + img2*(1-a) img0 = cv2.imread('image0.jpg', 1) img1 = cv2.imread('image1.jpg', 1) img0Info = img0.shape height = img0Info[0] width = img0Info[1] #ROI:定义特定融合范围, 融合过程每张图片大小需要保持一致 roiH = int(height / 2) roiW = int(width / 2) img0ROI = img0[0:roiH, 0:roiW] img1ROI = img1[0:roiH, 0:roiW] #dst,定义一个空白像素矩阵 dst = np.zeros((roiH,roiW,3),np.uint8) #对空白像素矩阵进行像素填充,a=0.5代表透明度 dst = cv2.addWeighted(img0ROI, 0.5, img0ROI, 0.5, 0) #图片展示 cv2.imshow('dst', dst) cv2.waitKey(0)
图片处理:对图片进行马赛克、毛玻璃、图片融合处理
最新推荐文章于 2022-02-08 16:12:14 发布