日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

ASM模型对人脸特征点的检测

發(fā)布時(shí)間:2025/4/16 pytorch 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASM模型对人脸特征点的检测 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
<span style="font-size:18px;">// Face_ASM.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。 ////#include "stdafx.h" #include <iostream> #include <vector> //#include "stdafx.h"#include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/objdetect/objdetect.hpp" #pragma comment(lib,"asmlibraryD.lib")#include "asmfitting.h"using namespace std; using namespace cv;int main() {Point2D32f pt;int circle_x, circle_y, i, j;//IplImage* img = cvLoadImage("D:6.jpg");Mat img = imread("D:6.jpg");IplImage* img1;img1 = &IplImage(img);//*****************人臉檢測****************************************************************************CascadeClassifier face_cascade; //識(shí)別人臉的功能if (!face_cascade.load("haarcascade_frontalface_alt.xml")){cout << "Cascadeclassifier load false!" << endl;return -1;}vector<Rect> face_vec; //保存人臉的個(gè)數(shù),vector保存到容器中Mat pic_RGB, pic_GRAY;pic_RGB = img;cvtColor(pic_RGB, pic_GRAY, CV_RGB2GRAY);//進(jìn)行灰度變換equalizeHist(pic_GRAY, pic_GRAY);//進(jìn)行直方圖均衡化face_cascade.detectMultiScale(pic_GRAY, face_vec, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(10, 10)); //檢測數(shù)人臉if (!face_vec.size())cout << "檢測不到人臉!" << endl;elsecout << "檢測到 " << face_vec.size() << "張人臉!" << endl;for (i = 0; i<(int)face_vec.size(); i++){Point p1((int)face_vec[i].x, (int)face_vec[i].y);Point p2((int)(face_vec[i].x + face_vec[i].width), (int)(face_vec[i].y + face_vec[i].height*1.1));rectangle(img, p1, p2, Scalar(255, 0, 0), 1, 8, 0); } //矩形框顯示出人臉//imshow("facedetect_test",pic_RGB);//***************ASM特征點(diǎn)匹配*************************************************************************if (!face_vec.size()){cout << "沒有檢測到人臉,無法ASM特征點(diǎn)匹配" << endl;return -1;}//下面上是ASM模型對(duì)人臉中特征點(diǎn)的檢測asm_shape shape, detshape;asmfitting fit_asm;if (fit_asm.Read("my68-1d.amf") == false){cout << "ASM特征點(diǎn)模版載入失敗,退出!" << endl;return -1;}//模版位置初始化detshape.Resize(2);for (i = 0; i<(int)face_vec.size(); i++){detshape[0].x = (float)face_vec[i].x;//face_rect是cvRect型結(jié)構(gòu)體的實(shí)體,cvRect結(jié)構(gòu)體的成員為x,y,width,heightdetshape[0].y = (float)face_vec[i].y;detshape[1].x = (float)(face_vec[i].x + face_vec[i].width);detshape[1].y = (float)(face_vec[i].y + face_vec[i].height);InitShapeFromDetBox(shape, detshape, fit_asm.GetMappingDetShape(), fit_asm.GetMeanFaceWidth());//給人臉圖像貼上ASM模版bool b = fit_asm.ASMSeqSearch(shape, img1, 0, true, 30);//對(duì)準(zhǔn)人臉特征點(diǎn)//提取特征點(diǎn)坐標(biāo)位置// for(j=0;j<68;j++)// {//pt = shape[j];// circle_x=cvRound(pt.x);// circle_y=cvRound(pt.y);// cvCircle( img,cvPoint(circle_x,circle_y), 2, cvScalar(255,0,0),1, 8, 0 );// }pt = shape[27];circle_x = cvRound(pt.x);circle_y = cvRound(pt.y);circle(img, cvPoint(circle_x, circle_y), 2, cvScalar(0, 255, 0), 1, 8, 0);pt = shape[29];circle_x = cvRound(pt.x);circle_y = cvRound(pt.y);circle(img, cvPoint(circle_x, circle_y), 2, cvScalar(0, 255, 0), 1, 8, 0);pt = shape[34];circle_x = cvRound(pt.x);circle_y = cvRound(pt.y);circle(img, cvPoint(circle_x, circle_y), 2, cvScalar(0, 255, 0), 1, 8, 0);pt = shape[32];circle_x = cvRound(pt.x);circle_y = cvRound(pt.y);circle(img, cvPoint(circle_x, circle_y), 2, cvScalar(0, 255, 0), 1, 8, 0);}imshow("facedetect_test", img);if (cvWaitKey(0) >= 0)return 0;return 0; } </span> <span style="font-size:18px;"> </span> <span style="font-size:18px;"> </span>


代碼下載地址:

http://download.csdn.net/detail/qq_18343569/9085929

點(diǎn)擊打開鏈接

總結(jié)

以上是生活随笔為你收集整理的ASM模型对人脸特征点的检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。