摘要:另外添加了帽子的自適應大小,帽子會根據所檢測到的人臉的區域的大小自行拉伸到合適大小,同時還對圖片進行了規范化。
簡單的加圣誕帽的程序,python3+opencv3.4
1月6號更新,在自己寫完這個博客之后,女朋友發給我一個微信公眾號,里面也同樣推送了如何使用python寫添加圣誕帽的程序,而且用了一個小技巧可以進行隨機添加,同時還給我了我一張30多個人的圖像讓我全部添加,稍微了解一下opencv人臉檢測,是默認檢測所有人臉的,因此對代碼有了很小的改動就完成了需求,以下
# OpenCV 人臉檢測 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: # 隨機一頂帽子 hat = random.choice(hats) #下面就是之前的添加算法 。。。。。。。。 #########
最最最最簡單的加圣誕帽的程序,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代表黑色的點 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)
寫完才感覺真的很蠢,直接使用了opencv自帶的人臉檢測庫,起初是利用人臉的黃金分割比例企圖對帽子進行定位,后來發現他的人臉檢測的框有時候會只檢測到眉毛并不會框到額頭。另外添加了帽子的自適應大小,帽子會根據所檢測到的人臉的區域的大小自行拉伸到合適大小,同時還對圖片進行了規范化。現在只能說對大部分比較標準的人臉可以做到帽子位置添加正確。實際上還試過有背景的帽子圖片,做了很多掩膜提取的工作,但是效果都不是很好,最后還是去找了png格式的帽子圖片。以下是隨手測試的幾張人臉效果
如有侵權請留言,我會刪除。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41100.html
摘要:年月宣布支持時間延長到年。更詳細的發布列表參閱官網的版本號分為三段,形如。其中表示大版本號,一般當整體重寫,或出現不向后兼容的改變時,增加表示功能更新,出現新功能時增加表示小的改動如修復了某個,只要有修改就增加。年公司正式發布。 < 返回索引頁 Python語言簡介 Python介紹及發展 介紹 Python 官方網站:https://www.python.org/, 大家可以到此處下...
摘要:數鍵盤雖然是一個很簡單的游戲,但是解答的過程中已經包含了最基礎的動態規劃解題思路定義狀態再重新定義問題找到最基礎的狀態找出狀態轉移方程編程求解最長上升子序列問給定一個無序的整數數組,找到其中最長上升子序列的長度。 算法能力就是程序員的內力,內力強者對編程利劍的把控能力就更強。 數鍵盤 動態規劃就是,通過遞推的方式,由最基本的答案推導出更復雜答案的方法,直到找到最終問題的解。或者是,通過...
摘要:是面向對象語言這意味著支持面向對象的風格或代碼封裝在對象的編程技術。在上執行命令,就可以進入到的交互模式,并顯示出版本等信息。選擇的版本,需要下載安裝包,然后進行安裝。 一、Python簡介 Python 是一種解釋型語言: 這意味著開發過程中沒有了編譯這個環節。類似于PHP和Perl語言。 Python 是交互式語言: 這意味著,您可以在一個Python提示符,直接互動執行寫你的程...
閱讀 2577·2021-09-26 10:13
閱讀 5985·2021-09-08 10:46
閱讀 692·2019-08-30 15:53
閱讀 2966·2019-08-29 16:13
閱讀 2761·2019-08-26 12:23
閱讀 3485·2019-08-26 11:24
閱讀 1093·2019-08-23 18:09
閱讀 1032·2019-08-23 17:08