溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

新年福利來一波之Python輕松集齊五福(demo)

發(fā)布時間:2020-10-23 15:36:37 來源:腳本之家 閱讀:151 作者:呀哈呀哈呀哈 欄目:開發(fā)技術(shù)

新的一年又要到來了,各個大的公司又在這年末為大家送上了新春的祝福,支付寶還是延續(xù)了這幾年的傳統(tǒng),在年末為大家送上了集五福的活動,為了大家能更快更好的掃出來大大的“福”,今天就帶領(lǐng)大家利用python做一個一“福”轉(zhuǎn)“N”福的小demo。

先看效果圖

新年福利來一波之Python輕松集齊五福(demo)

首先,我們需要拿到一張大大的“福”字圖片,然后,我們就可以對于這張圖進(jìn)行操作了。我們今天要實現(xiàn)的就是將一張“?!弊洲D(zhuǎn)化為五種不同的風(fēng)格,現(xiàn)為大家呈上效果圖。

灰度圖

首先為大家展示的是灰度圖,灰度圖就是將彩色的RGB三通道圖像,轉(zhuǎn)化為單通道的灰色圖像,RGB三個通道的顏色通過比例系數(shù)進(jìn)行相加。程序如下所示。

def Gray_fu(self):
 gray_img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
 return gray_img

輪廓圖

接下來是輪廓圖,輪廓圖需要輸入一張灰度圖像,首先是對圖像進(jìn)行濾波處理,去除噪聲,然后針對于灰色的圖片中像素突然變化的點來檢測邊緣,什么是邊緣突然變化呢,參考我們的灰度圖,灰度圖中,“福”字的邊緣同背景顏色出現(xiàn)了巨大的差異,這種差異就是尋找邊緣輪廓的依據(jù),程序如下圖所示。

def Canny_fn(self):
 img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
 img = cv2.GaussianBlur(img, (3, 3), 0)
 canny_img = cv2.Canny(img, 50, 150)
 return canny_img

反色圖

對于反色圖,理解起來并不難,就是用255減去將原圖中的每一個像素值,得到的就是我們的反色圖,程序如下:

def invert_fu(self):
 img = 255 - self.ori_img
 return img

腐蝕圖

對于腐蝕圖,因為在我們選取的圖像中,紅色是背景,黑色才是福字,所以對紅色進(jìn)行膨脹也就是對黑色進(jìn)行腐蝕。這也是 OpenCV 的內(nèi)置功能。我們只需要調(diào)用opencv中的膨脹函數(shù)即可。

def dilate_fu(self):
 # img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
 kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
 img = cv2.dilate(self.ori_img, kernel, iterations=1)
 print(img.shape)
 return img

福到家

最后是我們的“福到家”,我們只需要將福字進(jìn)行旋轉(zhuǎn)即可。

def rotate_fu(self):
 img = cv2.rotate(self.ori_img, 1)
 return img

完整代碼

import cv2
class Change_pic():
 def __init__(self, img):
  self.ori_img = cv2.imread(img)
 def Gray_fu(self):
  '''灰度圖'''
  gray_img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
  return gray_img
 def Canny_fn(self):
  '''輪廓圖'''
  img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
  img = cv2.GaussianBlur(img, (3, 3), 0)
  canny_img = cv2.Canny(img, 50, 150)
  return canny_img
 def invert_fu(self):
  '''反色圖'''
  img = 255 - self.ori_img
  return img
 def dilate_fu(self):
  '''腐蝕圖'''
  # img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
  kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
  img = cv2.dilate(self.ori_img, kernel, iterations=1)
  print(img.shape)
  return img
 def rotate_fu(self):
  '''福到家'''
  img = cv2.rotate(self.ori_img, 1)
  return img

總結(jié)

以上所述是小編給大家介紹的新年福利來一波之Python輕松集齊五福,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI