使用opencv怎么转换颜色空间并更改图片背景

  介绍

本篇文章为大家展示了使用opencv怎么转换颜色空间并更改图片背景,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

思路:

1,将BGR转换为HSV颜色空间
2,设置掩模
3位运算

这里以更改摩托罗拉标志背景为例,图片在必应图片搜索得知,具体代码如下:

import  numpy  as  np   import  cv2   得到imageio  import  imread   import  matplotlib.pyplot  as  plt      def 显示(img winname =,“img"):   ,cv2.namedWindow (winname cv2.WINDOW_GUI_NORMAL)   ,cv2.imshow (winname img)   ,cv2.waitKey (0)   ,cv2.destroyAllWindows ()      时间=imgpath  " # 39; motorola.jpg& # 39;      时间=img  imread (imgpath)   时间=img  cv2.cvtColor (img cv2.COLOR_BGR2RGB)   if  img.shape ==, 4:=,img, img  (::,: 3)      显示(img)   打印(img.shape)      时间=bgd  np.ones (img.shape dtype=np.uint8)   bgd[::,:],=, 255, #转换为白色背景   显示(bgd,“white")   #,转换颜色空间   时间=hsv  cv2.cvtColor (img cv2.COLOR_BGR2HSV)   #,显示(hsv)   #,绿色分量掩模,使用inRange函数=#,lowergreen  np.array(35, 43岁,46岁,dtype =, np.uint8)=#,uppergreen  np.array ([77255255], dtype=np.uint8)=#,maskgreen  cv2.inRange (hsv, lowergreen uppergreen)   #,显示(maskgreen)      #,蓝色分量掩模,使用inRange函数   时间=lowerblue  np.array(100年,43岁,46岁,dtype =, np.uint8)   时间=upperblue  np.array ([124255255], dtype=np.uint8)   时间=maskblue  cv2.inRange (hsv, lowerblue,, upperblue)   时间=maskblue_inv  cv2.bitwise_not (maskblue)   显示(maskblue & # 39; maskblue& # 39;)   显示(maskblue_inv & # 39; maskblue_inv& # 39;)   #,腐蚀操作   时间=kernel_erode  np.ones ((3,3), dtype =, np.uint8)   时间=erode  cv2.erode (maskblue kernel_erode)      #,膨胀操作   时间=kernel_dilate  np.ones ((5,5), np.uint8)   时间=dilate  cv2.dilate(侵蚀,kernel =, kernel_dilate)      显示(侵蚀,& # 39;侵蚀# 39;)      #,前景色只留下蓝色字体部分   时间=fg  cv2.bitwise_and (img, img mask =, maskblue)   显示(fg, & # 39; fg # 39;)   #,背景中除去蓝色字体部分   时间=bg  cv2.bitwise_and (bgd bgd, mask =, maskblue_inv)   显示(bg & # 39; bg # 39;)   #,前景色和背景色相加   时间=dst  cv2.add (bg, fg)   显示(dst & # 39; dst # 39;)

使用opencv怎么转换颜色空间并更改图片背景