给照片换底色(python+opencv) |
您所在的位置:网站首页 › 证件照蓝底色值cmyk › 给照片换底色(python+opencv) |
给照片换底色(python+opencv)
本篇目录: 🦄 一、分析照片基本信息 🦄 二、方法一(遍历图像,将像素值点替换修改为指定颜色) 🦄 三、修改图片颜色方法二(先转换图像格式再替换颜色值) (1)、效果对比图 (2)、实现方法 🦄 四、总结 🦄 一、分析照片基本信息生活中,我们有时需要更换照片的底色,例如证件照,有需要蓝底的,也有需要红底的。给照片换底色实现方法有很多,用phothshop、各种图片修改装饰软件都能够做到。那么在计算视觉角度看,实现给照片换底色的方法如何实现呢? 我们来试一下测试一下。我们有一张蓝底的图片: 要处理好图片,首先要先了解图片的情况,我们来看一下这张图片的基本相关信息: import cv2 img = cv2.imread('girl4b.jpg') print(img) information = img.shape print(information) img_size = img.size print(img_size) ima_type = img.dtype print(ima_type) cv2.imshow("window_name", img) cv2.waitKey(0)运行结果: print(img)[[[255 19 19] [255 10 10] [255 9 9] ... [255 10 11] [255 8 9] [255 20 20]] [[255 10 10] [250 2 2] [248 0 0] ... ... ... [253 12 11] [250 9 8] [255 20 19]]] print(information)# 行、列、通道数量: # 图像高度 × 图像宽度 × 图像通道数 (378, 350, 3) img_size = img.size print(img_size)#图像大小: 396900 ima_type = img.dtype print(ima_type)#图像数据类型:unit8,8位无符号整型 uint8 🦄 二、方法一(遍历图像,将像素值点替换修改为指定颜色)把图像修改成白底的图,更改背景:蓝色→白色 粗糙的代码方法是: import cv2 img = cv2.imread('girl4b.jpg') information = img.shape (b, g, r) = img[250, 250] # 更改背景:蓝色---→白色 for row in range(information[0]): for col in range(information[1]): (b, g, r) = img[row, col] if b >= 200: # 如果b通道值大于200(蓝色),就将该点替换为白色 img[row, col] = (255, 255, 255) cv2.imwrite('girl4b_c30b_white.jpg', img) cv2.waitKey(0) cv2.destroyAllWindows()运行效果(并不理想): 图片背景大部分都被替换成了白色,但是人物脸部部分位置,肩膀部分的颜色也被替换成了白色,效果并部理想,需要更换修改颜色的方法。 先看一下转换效果对比图片: 先转换图像格式再替换颜色值, 图像格式资料可以参考以下博文: 计算机视觉基础__图像特征(位图和矢量图概念、图像的颜色特征、RGB 颜色空间、HSV 颜色空间、HLS 颜色空间、CMYK 颜色、Lab模式、索引模式、HSB色彩模式、灰度图、二值图) ①、导入模块 import cv2 import numpy as np②、# 读取照片 image=cv2.imread('girl4b.jpg')③、# 图片转换为二值化图 hsvimg = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)④、# 图片二值化黑白处理 lower_red = np.array([110,70,150]) upper_red = np.array([150,255,255]) hbimg = cv2.inRange(hsv, lower_red, upper_red)⑤、#闭运算 k=np.ones((5,5),np.uint8) r=cv2.morphologyEx(hbimg,cv2.MORPH_CLOSE,k)⑥ 、#颜色替换 # 像素点为255表示的是白色,我们要将白色处的像素点,替换为红色 # 替换颜色,为BGR通道,不是RGB通道 rows,cols,channels = image.shape for i in range(rows): for j in range(cols): if r[i,j]==255: image[i,j]=(0,0,255)⑦、#保存新图片 cv2.imwrite('girl4b_c32_red.jpg',image)⑧、#无限等待,销毁内存 cv2.waitKey(0) cv2.destroyAllWindows()⑨、完整代码 import cv2 import numpy as np image=cv2.imread('girl4b.jpg') #修改尺寸 #image = cv2.resize(image,None,fx=0.8,fy=0.8) hsvimg = cv2.cvtColor(image,cv2.COLOR_BGR2HSV) cv2.imshow('hsvimg',hsvimg) lower_red = np.array([110,70,150]) upper_red = np.array([150,255,255]) hbimg = cv2.inRange(hsvimg, lower_red, upper_red) cv2.imshow('hbimg',hbimg) k=np.ones((5,5),np.uint8) r=cv2.morphologyEx(hbimg,cv2.MORPH_CLOSE,k) cv2.imshow('yuantu',image) rows,cols,channels = image.shape for i in range(rows): for j in range(cols): if r[i,j]==255: image[i,j]=(0,0,255) cv2.imshow('red',image) cv2.imwrite('girl4b_c32_red.jpg',image) cv2.waitKey(0) cv2.destroyAllWindows() 🦄 四、总结给照片换底色只是最基础的计算机视觉应用之一,进一步,可扩展至人像抠图, 通用抠图(商品、动物、植物、汽车等抠图),天空替换(实现魔法换天空),视频人像抠图等领域。 推荐阅读: 语音识别实战(python代码)(一) 人工智能基础篇 计算机视觉基础__图像特征 matplotlib 自带绘图样式效果展示速查(28种,全) Python 3D可视化(一) 让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud) python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心) python爱心源代码集锦(18款)Python中Print()函数的用法___实例详解(全,例多) Python函数方法实例详解全集(更新中...) 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念 python练习题目录 草莓熊python turtle绘图代码(玫瑰花版)附源代码 草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码 巴斯光年python turtle绘图__附源代码 皮卡丘python turtle海龟绘图(电力球版)附源代码别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4套) SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例)2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载) Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细) 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名) 2023年4月多家权威机构____编程语言排行榜__薪酬状况手机屏幕坏了____怎么把里面的资料导出(18种方法) 【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向)查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决 tomcat11、tomcat10 安装配置(Windows环境)(详细图文) Tomcat端口配置(详细) Tomcat 启动闪退问题解决集(八大类详细) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |