import cv2 import numpy as np def cvtBackground(path,color): """ 功能:给证件照更换背景色(常用背景色红、白、蓝) 输入参数:path:照片路径 color:背景色 """ im=cv2.imread(path) im_hsv=cv2.cvtColor(im,cv2.COLOR_BGR2HSV) #BGR和HSV的转换使用 cv2.COLOR_BGR2HSV #aim=np.uint8([[im[0,0,:]]]) #hsv_aim=cv2.cvtColor(aim,cv2.COLOR_BGR2HSV) mask=cv2.inRange(im_hsv,np.array([im_hsv[0,0,0]-0.1,100,100]),np.array([im_hsv[0,0,0]+0.1,255,255])) #利用cv2.inRange函数设阈值,去除背景部分 mask1=mask #在lower_red~upper_red之间的值变成255 img_median = cv2.medianBlur(mask,5) #自己加,中值滤波,去除一些边缘噪点 mask2 = img_median mask_inv=cv2.bitwise_not(mask2) img1=cv2.bitwise_and(im,im,mask=mask_inv) #将人物抠出 bg=im.copy() rows,cols,channels=im.shape bg[:rows,:cols,:]=color img2=cv2.bitwise_and(bg,bg,mask=mask2) #将背景底板抠出 img=cv2.add(img1,img2) #改变图片比例 h, w = img.shape[:2] img5 = cv2.resize(img, (int(w * 1/3), int(h * 1/3)), interpolation=cv2.INTER_LINEAR) image={'im':im,'im_hsv':im_hsv,'mask':mask1,'img_median':img_median,'img':img5} cv2.startWindowThread() #加了这个后在图片窗口按Esc就可以关闭图片窗口 for key in image: cv2.namedWindow(key) cv2.imshow(key,image[key]) cv2.waitKey(0) cv2.destroyAllWindows() return image #test if __name__=='__main__': img=cvtBackground('D:\picture\\rm.jpg',[255,255,255])这段代码涵盖的知识点
时间: 2023-12-08 15:04:08 浏览: 54
1. 导入模块(cv2和numpy)
2. 定义函数cvtBackground,实现证件照更换背景色的功能
3. 读取图片(cv2.imread)
4. 将BGR颜色空间转换为HSV颜色空间(cv2.cvtColor)
5. 设定阈值,去除背景部分(cv2.inRange)
6. 中值滤波,去除一些边缘噪点(cv2.medianBlur)
7. 图片取反(cv2.bitwise_not)
8. 与运算,将人物抠出(cv2.bitwise_and)
9. 创建背景底板,并将其与阈值后的照片进行与运算,将背景抠出(cv2.bitwise_and)
10. 将人物和背景合并(cv2.add)
11. 改变图片比例(cv2.resize)
12. 定义一个字典,包含处理过程中用到的所有图像
13. 创建窗口,并显示图像(cv2.namedWindow,cv2.imshow)
14. 等待按键按下,关闭窗口(cv2.waitKey,cv2.destroyAllWindows)
15. 在主函数中调用cvtBackground函数,测试代码功能
相关问题
import cv2 import numpy as np # 指定存放图片的路径 path = 'f:\\deeplearning\
import cv2是Python中用于调用OpenCV库的模块。OpenCV是一个开源的计算机视觉库,可以用于图像处理、计算机视觉、机器学习等领域。通过import cv2语句,我们可以在Python中使用OpenCV的函数和方法来处理图像和视频数据。
同时,import numpy as np语句是用来导入numpy库,并给它起一个别名np。numpy是Python中用于科学计算的库,提供了大量的数学函数和矩阵运算功能。通过import numpy as np语句,我们可以在Python中使用numpy库中的各种函数和方法来进行数组运算、线性代数运算等操作。
综合起来,import cv2 import numpy as np这句话意味着我们在Python中导入了OpenCV库和numpy库,并分别用cv2和np来表示它们。这样就可以方便地使用OpenCV和numpy库中的各种函数和方法来处理图像数据和进行科学计算。这对于图像处理、计算机视觉、机器学习等领域的开发非常有用。
import os import sys from pathlib import Path import numpy as np import torch import cv2
这是一段Python代码,用于导入一些常用的库和模块。让我为你逐个介绍一下:
1. `import os`:这个模块提供了许多与操作系统交互的函数,例如文件和目录操作。
2. `import sys`:这个模块提供了对Python解释器的访问和控制,可以用来处理命令行参数等。
3. `from pathlib import Path`:`pathlib`模块提供了一种面向对象的方式来处理文件系统路径。`Path`类是`pathlib`模块中的一个重要类,可以用来创建、操作和查询文件路径。
4. `import numpy as np`:`numpy`是一个用于科学计算的Python库,提供了高性能的多维数组对象和相关的计算函数。
5. `import torch`:`torch`是一个用于机器学习和深度学习的Python库,提供了张量(tensor)数据结构和相关的计算函数。
6. `import cv2`:`cv2`是OpenCV库的Python接口,OpenCV是一个用于计算机视觉和图像处理的开源库,提供了许多图像处理和计算机视觉算法的实现。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)