利用OpenCV的人臉檢測給頭像帶上聖誕帽

2022-05-14 19:34:41 字數 2733 閱讀 6049

我們來看下效果

原圖:效果:

原理其實很簡單:

採用一張聖誕帽的png影象作為素材,

利用png影象背景是透明的,貼在背景上就是戴帽子的效果了。

人臉檢測的目的主要是為了確定貼帽子的位置,類似ps中自由變換的功能,檢測到人臉中間的位置,resize聖誕帽子和人臉大小匹配,確定位置,貼上去,ok!

// getheader.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "opencv2/objdetect/objdetect.hpp"

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/imgproc/imgproc.hpp"

#include #include using namespace std;

using namespace cv;

#pragma comment(lib,"opencv_core2410d.lib")

#pragma comment(lib,"opencv_highgui2410d.lib")

#pragma comment(lib,"opencv_objdetect2410d.lib")

#pragma comment(lib,"opencv_imgproc2410d.lib")

/** function headers */

void detectanddisplay( mat frame );

/** global variables */

//-- note, either copy these two files from opencv/data/haarscascades to your current folder, or change these locations

string face_cascade_name = "d:\\program files\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml";

string eyes_cascade_name = "d:\\program files\\opencv\\sources\\data\\haarcascades\\haarcascade_eye_tree_eyeglasses.xml";

cascadeclassifier face_cascade;

cascadeclassifier eyes_cascade;

string window_name = "capture - face detection";

rng rng(12345);

const int frame_width = 1280;

const int frame_height = 240;

/*** @function main

*/int main( void )

; if( !eyes_cascade.load( eyes_cascade_name ) );

frame = imread("19.jpg");//背景

}

下面是攝像頭實時戴帽子,改下主函式就好了:

int main( void )

; if( !eyes_cascade.load( eyes_cascade_name ) );

// frame = imread("19.jpg");//背景

videocapture cap(0); //開啟預設的攝像頭號

if(!cap.isopened()) //檢測是否開啟成功

return -1;

mat edges;

//namedwindow("edges",1);

for(;;)

//攝像頭會在videocapture的析構函式中釋放

waitkey(0);

return 0;

}

我的系統的是win10 64位的系統,之前攝像頭出來都是黑的,發現需要用vs2010配置一下x64版本方可使用,查了半天還是自己之前寫的部落格靠譜:

就是按照win7 x64來配置,完美執行

效果:

我除錯好的工程:

點選開啟鏈結



基於OpenCV的簡單的人臉檢測

這個是在數字影象處理課程裡面的乙個小實踐內容。參考網上已有 重新配置編譯,效果不錯。人臉識別的庫使用的是haarcascade frontalface檔案,包含在opencv當中的。關鍵部分 如下 本原始碼只為學習交流之用 typersever from gzhu static cvmemstora...

基於opencv3的人臉檢測

目前opencv3中已經有人臉檢測的類了,只要呼叫函式庫的類就行 該程式需要兩個xml檔案,分別是haarcascade frontalface alt.xml和haarcascade eye tree eyeglasses.xml,它們分別是已經通過了大量訓練且能檢測出人臉和眼睛了,只要呼叫即可。...

Python基於OpenCV的人臉檢測並儲存

import cv2cv2.cascadeclassifier cv2.data.haarcascades haarcascade frontalface default.xml coding utf 8 import opencv的庫 import cv2 import os,math,opera...