新年福利之Python輕松集齊五福! [復制鏈接]

2020-1-19 17:27
Gendan5 閱讀:639 評論:0 贊:0
Tag:  
新的一年又要到來了,各個大的公司又在這年末為大家送上了新春的祝福,支付寶還是延續了這幾年的傳統,在年末為大家送上了集五福的活動,為了大家能更快更好的掃出來大大的“?!?,今天就帶領大家利用python做一個一“?!鞭D“N”福的小demo。

先看效果圖
首先,我們需要拿到一張大大的“?!弊謭D片,然后,我們就可以對于這張圖進行操作了。我們今天要實現的就是將一張“?!弊洲D化為五種不同的風格,現為大家呈上效果圖。

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

def Gray_fu(self):
    gray_img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY)
    return gray_img
1
2
3
輪廓圖
接下來是輪廓圖,輪廓圖需要輸入一張灰度圖像,首先是對圖像進行濾波處理,去除噪聲,然后針對于灰色的圖片中像素突然變化的點來檢測邊緣,什么是邊緣突然變化呢,參考我們的灰度圖,灰度圖中,“?!弊值倪吘壨尘邦伾霈F了巨大的差異,這種差異就是尋找邊緣輪廓的依據,程序如下圖所示。

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
1
2
3
4
5
反色圖
對于反色圖,理解起來并不難,就是用255減去將原圖中的每一個像素值,得到的就是我們的反色圖,程序如下:

def invert_fu(self):
    img = 255 - self.ori_img
    return img
1
2
3
腐蝕圖
對于腐蝕圖,因為在我們選取的圖像中,紅色是背景,黑色才是福字,所以對紅色進行膨脹也就是對黑色進行腐蝕。這也是 OpenCV 的內置功能。我們只需要調用opencv中的膨脹函數即可。

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
1
2
3
4
5
6
福到家
最后是我們的“福到家”,我們只需要將福字進行旋轉即可。

def rotate_fu(self):
    img = cv2.rotate(self.ori_img, 1)
    return img
1
2
3
完整代碼
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


我來說兩句
您需要登錄后才可以評論 登錄 | 立即注冊
facelist
所有評論(0)
領先的中文移動開發者社區
18620764416
7*24全天服務
意見反饋:[email protected]

掃一掃關注我們

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粵ICP備15117877號 )

在柳州学什么小吃赚钱 双色球里游离码是什么意思 快乐12遗漏数据查询 广东36选7开奖走势图 浙江6十1开奖18055期 管家婆六肖期期中奖 韩国福彩快乐8 山东十一选五彩乐乐 金融配资 全网最准一尾中特公式 真人博彩