图片处理:对图片进行马赛克、毛玻璃、图片融合处理

#对图片指定部位进行马赛克处理
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarkJhon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值