python使用cv2实现证件照换底色

一、使用的cv2库其实是要install opencv-python的

pip install  -i https://pypi.doubanio.com/simple/  --trusted-host pypi.doubanio.com    --target=g:\python\lib\site-packages  opencv-python   

二、cv2基础使用
1、打开与展示图片

import cv2
#打开展示
img=cv2.imread('1.jpg',1)#0是黑白图,1是彩色
cv2.imshow('imgshow',img)#imgshow是打开窗口的名字
cv2.waitKey(0)#0代表无限等待,不然窗口会闪退
#放大缩小
rows,kols,channels=img.shape#获取尺寸
print(rows,kols,channels)#640 480 3
img=cv2.resize(img,None,fx=0.5,fy=0.5)#缩小图片尺寸
rows,kols,channels=img.shape
print(rows,kols,channels)#320 240 3
#z转换成二值化图(不是黑白)
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#z转换成二值化图(不是黑白)

2、使用np数组给图片变形

import numpy as np
kernel=np.ones((5,5),np.uint8)#uint8指定数据类型
print(kernel)

在这里插入图片描述
3、腐蚀与膨胀

import numpy as np
import cv2

img=cv2.imread('1.png',1)#0是黑白图,1是彩色
kernel=np.ones((5,5),np.uint8)#uint8指定数据类型

erosion=cv2.erode(img,kernel)#腐蚀
dilation=cv2.dilate(img,kernel)#膨胀

cv2.imshow('show',np.hstack((img,erosion,dilation)))#显示在一张图上
cv2.waitKey(0)#0代表无限等待,不然窗口会闪退

在这里插入图片描述
三、证件照(蓝底–>红底)

import numpy as np
import cv2

img=cv2.imread('me.jpg',1)#0是黑白图,1是彩色
rows,kols,channels=img.shape#获取尺寸

hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#z转换成二值化图 BGR
#cv2.imshow('hsv',hsv)

lower_blue=np.array([90,70,70])#原图为蓝底,数字自己调
upper_blue=np.array([110,255,255])
mask=cv2.inRange(hsv,lower_blue,upper_blue)#转成黑白图,勾出轮廓,但主体黑色内会出现白色小点
cv2.imshow('mask',mask)

erosion=cv2.erode(mask,None,iterations=1)#数组是None,腐蚀会使白色小点变少,但换底后轮廓明显
dilation=cv2.dilate(mask,None,iterations=1)#膨胀会使白色小点变多,但换底后轮廓比较自然

for i in range(rows):
    for j in range(kols):
        if erosion[i,j]==255:#
            img[i,j]=(0,0,255)#换成红底 rgb是(255,0,0) 本图是GBR(0,0,255)
cv2.imshow('result',img)

cv2.imwrite('result.jpg',img)#保存

cv2.waitKey(0)
cv2.destroyAllWindows()#关闭全部窗口
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值