成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

簡(jiǎn)單的加圣誕帽的程序,python3+opencv3.4

xiaotianyi / 2015人閱讀

摘要:另外添加了帽子的自適應(yīng)大小,帽子會(huì)根據(jù)所檢測(cè)到的人臉的區(qū)域的大小自行拉伸到合適大小,同時(shí)還對(duì)圖片進(jìn)行了規(guī)范化。

簡(jiǎn)單的加圣誕帽的程序,python3+opencv3.4

1月6號(hào)更新,在自己寫(xiě)完這個(gè)博客之后,女朋友發(fā)給我一個(gè)微信公眾號(hào),里面也同樣推送了如何使用python寫(xiě)添加圣誕帽的程序,而且用了一個(gè)小技巧可以進(jìn)行隨機(jī)添加,同時(shí)還給我了我一張30多個(gè)人的圖像讓我全部添加,稍微了解一下opencv人臉檢測(cè),是默認(rèn)檢測(cè)所有人臉的,因此對(duì)代碼有了很小的改動(dòng)就完成了需求,以下

# OpenCV 人臉檢測(cè)
face_patterns = cv2.CascadeClassifier("D:opencv3.0opencvsourcesdatahaarcascadeshaarcascade_frontalface_default.xml")
sample_image = cv2.imread("C:UsersElamDesktop	ttt.jpg")
faces = face_patterns.detectMultiScale(sample_image,
                                       scaleFactor=1.1,
                                       minNeighbors=10,
                                       minSize=(10, 10))
# 圣誕帽
hats = []
for i in range(6):
    hats.append(cv2.imread("C:UsersElamDesktop\%d.png" % i, -1))

for face in faces:
    # 隨機(jī)一頂帽子
    hat = random.choice(hats)
    #下面就是之前的添加算法
    。。。。。。。。
    
    
    #########

最最最最簡(jiǎn)單的加圣誕帽的程序,python3+opencv3.4

# -*- coding: utf-8 -*-
"""
Created on Mon Dec 25 15:22:14 2017

@author: Elam
"""

import cv2
import numpy as np
face_patterns = cv2.CascadeClassifier("D:opencv3.0opencvsourcesdatahaarcascadeshaarcascade_frontalface_default.xml")
sample_image = cv2.imread("C:UsersElamDesktopllll.jpg")
hat=cv2.imread("C:UsersElamDesktoplvse.png",cv2.IMREAD_UNCHANGED)
a,b,c,d=cv2.split(hat)
rgb_hat=cv2.merge((a,b,c))
sample_wh=sample_image.shape
temp=float(sample_wh[1]/sample_wh[0])
temp_h=int(1024*temp)
sample_image_res=cv2.resize(sample_image,(temp_h,1024),interpolation=cv2.INTER_CUBIC)
faces = face_patterns.detectMultiScale(sample_image_res,scaleFactor=1.1,minNeighbors=5,minSize=(60, 60))
k_w=faces[0][2]
k_h=faces[0][3]

#####hat
hat_wh=rgb_hat.shape
temp_hat=float(hat_wh[1]/hat_wh[0])
#####改變帽子大小######
temp_hat_h=int((k_w)*4/5*temp_hat)
temp_hat_w=int(k_w*3/5)
###################



res=cv2.resize(rgb_hat,(temp_hat_h,temp_hat_w),interpolation=cv2.INTER_CUBIC)
res_d=cv2.resize(d,(temp_hat_h,temp_hat_w),interpolation=cv2.INTER_CUBIC)
#hsv=cv2.cvtColor(res,cv2.COLOR_BGR2HSV)
#lower_blue=np.array([0,0,0])
#upper_blue=np.array([255,255,253])
#mask = cv2.inRange(hsv, lower_blue, upper_blue)
#erode=cv2.erode(mask,None,iterations=2)
#dilate=cv2.dilate(erode,None,iterations=2)


####改變帽子位置#####
x_new=faces[0][0]+int(k_w/6)
y_new=faces[0][1]-int(k_h*0.65)
center=[y_new,x_new]#在新背景圖片中的位置
for i in range(temp_hat_w):
    for j in range(temp_hat_h):
        if res_d[i,j]!=0:#0代表黑色的點(diǎn)
            sample_image_res[center[0]+i,center[1]+j]=res[i,j]#此處替換顏色,為BGR通道
######################

#cv2.imshow("Mask", mask)
#res=cv2.resize(hat,(182,220),interpolation=cv2.INTER_CUBIC)
#WH=res.shape
#mask=cv2.imread("C:UsersElamDesktophat.jpg",0)

#imgROI=sample_image[10:192,10:230]
#sample_image[0:220,0:182]=res
for (x, y, w, h) in faces:
    cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imwrite("C:UsersElamDesktop	est333333.png", sample_image_res)
#cv2.imwrite("C:UsersElamDesktophattttttt.png", hat)

寫(xiě)完才感覺(jué)真的很蠢,直接使用了opencv自帶的人臉檢測(cè)庫(kù),起初是利用人臉的黃金分割比例企圖對(duì)帽子進(jìn)行定位,后來(lái)發(fā)現(xiàn)他的人臉檢測(cè)的框有時(shí)候會(huì)只檢測(cè)到眉毛并不會(huì)框到額頭。另外添加了帽子的自適應(yīng)大小,帽子會(huì)根據(jù)所檢測(cè)到的人臉的區(qū)域的大小自行拉伸到合適大小,同時(shí)還對(duì)圖片進(jìn)行了規(guī)范化?,F(xiàn)在只能說(shuō)對(duì)大部分比較標(biāo)準(zhǔn)的人臉可以做到帽子位置添加正確。實(shí)際上還試過(guò)有背景的帽子圖片,做了很多掩膜提取的工作,但是效果都不是很好,最后還是去找了png格式的帽子圖片。以下是隨手測(cè)試的幾張人臉效果

如有侵權(quán)請(qǐng)留言,我會(huì)刪除。





文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41100.html

相關(guān)文章

  • Python入門(mén)-Python簡(jiǎn)介

    摘要:年月宣布支持時(shí)間延長(zhǎng)到年。更詳細(xì)的發(fā)布列表參閱官網(wǎng)的版本號(hào)分為三段,形如。其中表示大版本號(hào),一般當(dāng)整體重寫(xiě),或出現(xiàn)不向后兼容的改變時(shí),增加表示功能更新,出現(xiàn)新功能時(shí)增加表示小的改動(dòng)如修復(fù)了某個(gè),只要有修改就增加。年公司正式發(fā)布。 < 返回索引頁(yè) Python語(yǔ)言簡(jiǎn)介 Python介紹及發(fā)展 介紹 Python 官方網(wǎng)站:https://www.python.org/, 大家可以到此處下...

    Java_oldboy 評(píng)論0 收藏0
  • 動(dòng)態(tài)規(guī)劃解題思路

    摘要:數(shù)鍵盤(pán)雖然是一個(gè)很簡(jiǎn)單的游戲,但是解答的過(guò)程中已經(jīng)包含了最基礎(chǔ)的動(dòng)態(tài)規(guī)劃解題思路定義狀態(tài)再重新定義問(wèn)題找到最基礎(chǔ)的狀態(tài)找出狀態(tài)轉(zhuǎn)移方程編程求解最長(zhǎng)上升子序列問(wèn)給定一個(gè)無(wú)序的整數(shù)數(shù)組,找到其中最長(zhǎng)上升子序列的長(zhǎng)度。 算法能力就是程序員的內(nèi)力,內(nèi)力強(qiáng)者對(duì)編程利劍的把控能力就更強(qiáng)。 數(shù)鍵盤(pán) 動(dòng)態(tài)規(guī)劃就是,通過(guò)遞推的方式,由最基本的答案推導(dǎo)出更復(fù)雜答案的方法,直到找到最終問(wèn)題的解?;蛘呤?,通過(guò)...

    miracledan 評(píng)論0 收藏0
  • 一、python與pycharm的安裝

    摘要:是面向?qū)ο笳Z(yǔ)言這意味著支持面向?qū)ο蟮娘L(fēng)格或代碼封裝在對(duì)象的編程技術(shù)。在上執(zhí)行命令,就可以進(jìn)入到的交互模式,并顯示出版本等信息。選擇的版本,需要下載安裝包,然后進(jìn)行安裝。 一、Python簡(jiǎn)介 Python 是一種解釋型語(yǔ)言: 這意味著開(kāi)發(fā)過(guò)程中沒(méi)有了編譯這個(gè)環(huán)節(jié)。類(lèi)似于PHP和Perl語(yǔ)言。 Python 是交互式語(yǔ)言: 這意味著,您可以在一個(gè)Python提示符,直接互動(dòng)執(zhí)行寫(xiě)你的程...

    awokezhou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<