1. 程式人生 > >opencv+人臉檢測(OpenCv3.0+VS2013)

opencv+人臉檢測(OpenCv3.0+VS2013)

進入正題吧----------------->最近一直在弄人臉檢測的程式碼,用的就是opencv3.0自己帶的人臉檢測的程式碼,可是一直就是出錯,在網上搜了好多,一直沒有找到解決的辦法,可能是自己的VS2013有問題吧!

主要程式碼如下:

#include "opencv2/core/core.hpp"   
#include "opencv2/objdetect/objdetect.hpp"   
#include "opencv2/highgui/highgui.hpp"   
#include "opencv2/imgproc/imgproc.hpp"   

#include <iostream>   
#include <stdio.h>   

using namespace std;
using namespace cv;
std::vector<Rect> faces;
string face_cascade_name = "haarcascade_frontalface_alt2.xml";
//該檔案存在於OpenCV安裝目錄下的\sources\data\haarcascades內,需要將該xml檔案複製到當前工程目錄下  
CascadeClassifier face_cascade;
void detectAndDisplay(Mat frame);
int main(int argc, char** argv){
	Mat image;
	image = imread("lyf.jpg", 1);  //當前工程的image目錄下的lyf.jpg檔案,注意目錄符號  
	if (image.empty()){
		printf("no find image!");
	}
	if (!face_cascade.load(face_cascade_name)){
		printf("級聯分類器錯誤,可能未找到檔案,拷貝該檔案到工程目錄下!\n");
		return -1;
	}
	detectAndDisplay(image); //呼叫人臉檢測函式  
	waitKey(0);
	//暫停顯示一下。  
}

void detectAndDisplay(Mat face){
	
	Mat face_gray;

    cvtColor(face, face_gray, CV_BGR2GRAY);  //rgb型別轉換為灰度型別  
	equalizeHist(face_gray, face_gray);   //直方圖均衡化  

	face_cascade.detectMultiScale(face_gray, faces, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));
      for (int i = 0; i <38; i++){
		Point center(int(faces[i].x + faces[i].width*0.5), int(faces[i].y + faces[i].height*0.5));
		ellipse(face, center, Size(int(faces[i].width*0.5), int(faces[i].height*0.5)), 0, 0, 360, Scalar(255, 0, 0), 4, 8, 0);
	}
	imshow("人臉識別", face);
}


主要有如下兩個問題:

1.     detectMultiScale()函式調用出錯,後來再網上搜了好久,解決方案是把“std::vector<Rect> faces;”,定義為全域性變數,我照做了,這個問題暫時算解決了,一執行又出現了一個問題;

2.     for (int i = 0; i <faces.size(); i++){
Point center(int(faces[i].x + faces[i].width*0.5), int(faces[i].y + faces[i].height*0.5));
ellipse(face, center, Size(int(faces[i].width*0.5), int(faces[i].height*0.5)), 0, 0, 360, Scalar(255, 0, 0), 4, 8, 0);
}

       這個迴圈語句,每次執行到i=39時就報錯,程式就終止了,實在沒明白為什麼,弄了半天,也沒有解決。

後來用了以前的程式碼(以前執行是一直出錯,這次執行第一次出錯,第二次竟然沒有出錯)

執行結果如下:


相關推薦

opencv+人臉檢測OpenCv3.0+VS2013)

進入正題吧----------------->最近一直在弄人臉檢測的程式碼,用的就是opencv3.0自己帶的人臉檢測的程式碼,可是一直就是出錯,在網上搜了好多,一直沒有找到解決的辦法,可能是自

呼叫opencv 人臉檢測實現問題解決~~(VS2013+Opencv)

前輩的文章詳細介紹了訓練xml分類器的過程,和人臉檢測相關的引數設定和程式碼,原文在這裡:傳送門 但是程式碼直接拿來用的話還是會出問題的, 這篇記錄的就是實現上述文章中呼叫xml的批量圖片人臉檢測遇到的問題和解決的辦法,有空的時候也會將自己訓練的詳細過程和

使用級聯分類器實現人臉檢測OpenCV自帶的數據)

== output include print code ould har his ... 1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 4 using namespace

Dlib + vs2013 人臉檢測一)

(一) 官網 http://dlib.net/compile.html 各個版本的dlib庫 https://sourceforge.net/projects/dclib/files/dlib/ dlib19.2及之後版本只可用於vs2015 配置dlib而建的工程需要提前配置好o

OpenCV3.0 + VS2013配置三:編譯和除錯OpenCV原始碼

在前文 OpenCV3.0 + VS2013 配置一:基本配置中提到 安裝包中沒有所需版本的dll情況下,需要利用cmake + VS構建和編譯OpenCV,而且這樣利用我們自己編譯得到的庫檔案還可以對OpenCV原始碼進行跟蹤除錯和修改,是OpenCV學習過程邁向“天師級”的基本要求

keras系列︱人臉表情分類與識別:opencv人臉檢測+Keras情緒分類四)

人臉識別熱門,表情識別更加。但是表情識別很難,因為人臉的微表情很多,本節介紹一種比較粗線條的表情分類與識別的辦法。 Keras系列: 本次講述的表情分類是識別的分析流程分為:

利用opencv實現人臉檢測C++版)

小編所有的帖子都是基於unbuntu系統的,當然稍作修改同樣試用於windows的,經過小編的絞盡腦汁,把剛剛發的那篇python 實現人臉和眼睛的檢測的程式用C++ 實現了,當然,也參考了不少大神的部落格,下面我們就一起來看看: Linux系統下安裝open

使用OpenCV進行人臉檢測Viola-Jones人臉檢測方法)

擴充套件閱讀:  參考文獻:Paul Viola, Michael J. Jones. Robust Real-Time Face Detection[J]. International Journal of Computer Vision,2004,57(2):13

OpenCV實踐之路——人臉檢測C++/Python)

本文由@星沉閣冰不語出品,轉載請註明作者和出處。之前一直覺得人臉檢測是非常麻煩的,即使是用opencv,麻煩到我都不敢去碰。這兩天仔細看了下,如果只是呼叫opencv自帶的分類器和函式的話,簡直是簡單。這不,正好最近也在學習Python,索性就用C++和Python兩種語言都

opencv人臉檢測程式碼應用與分析PC端和Android端)

(1)OpenCV人臉檢測C++程式流程: OpenCV的人臉檢測程式採用了Viola & Jones人臉檢測方法,主要是呼叫訓練好的瀑布級聯分類器cascade來進行模式匹配。 cvHaarDetectObjects先將影象灰度化,根據傳入引數判斷是否進行can

學習筆記二)——基於opencv人臉檢測原理及實現

最近搞了幾天的人臉檢測,終於把大體框架和原理搞清楚了,現在寫出來供大家學習之用,如有不對之處,還請大家指正。也希望大家在學習opencv的過程中能將學習過程及重點記錄下來,以部落格的形式分析,畢竟opencv的教材還不太多,我們自己學習大部分要靠網上的資料。通過部落格分享的

人臉檢測dlib和opencv

現在的人臉識別技術已經得到了非常廣泛的應用,支付領域、身份驗證、美顏相機裡都有它的應用。用iPhone的同學們應該對下面的功能比較熟悉iPhone的照片中有一個“人物”的功能,能夠將照片裡的人臉識別出來並分類,背後的原理也是人臉識別技術。這篇文章主要介紹怎樣用Python實現人臉檢測。人臉檢測是人臉識別的基礎

OpenCV人臉檢測(完整源代碼+思路)

exceptio pop ret 基礎 err 攝像 alt lena ann 本博文IDE為vs2013 OpenCV2.49 話不多說,先看視頻演示(20S演示): 例如以下: https://v.youku.com

opencv3.0 vs2013配置中的問題

read mas pre share ctu namespace window clas opencv3 問題: OpenCV Error: Assertion failed (size.width>0 && size.height>0) in

OpenCV——邊緣檢測sobel算子、Laplacian算子、scharr濾波器)

scale 變換 得到 疊加 操作 fault sch laplacian 技術 1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 4 using nam

0001-OpenCV3.0+VS2013+Windows7開發環境搭建

第01步 安裝VS2013 怎麼安裝,我這裡沒必要說吧,不清楚的請自行百度。 VS2013百度網盤下載連結如下: 連結:http://pan.baidu.com/s/1nvJpWAP 分享密碼請新增公眾號“qxsf321”後回覆"0001"獲取第02步 安裝OpenCV3.0 OpenCV3.0百度

OpenCV3.0 + VS2013配置二:自動化配置

OpenCV 3.0+ VS2013開發環境基本配置已在前文“OpenCV3.0+VS2013配置一”中進行了介紹,有些時候我們可能需要重複配置相同的環境,相信大家都會採用一些自動化的手段,這裡總結一下我自己自動化配置的方法。 一、環境變數 新建OpenCV3.0_Environm

【蜂口 | AI人工智慧】人臉檢測下)——龍鵬 深度學習與人臉影象應用連載二)

我們接著上一節的分享,繼續分享人臉檢測的下半部分。這次的分享主要是深度學習相關的。我們會主要講述當前深度學習在人臉檢測這個領域的發展水平。主要從以下幾個方向進行分享: 首先,我們會講講當前主流的基於深度學習的一個人臉檢測的框架,包括兩個框架,一個是級聯CNN框架

java實現opencv人臉識別二)

Java下使用opencv進行人臉檢測 工作需要,研究下人臉識別,發現opencv比較常用,儘管能檢測人臉,但識別率不高,多數是用來獲取攝像頭的視訊流的,提取裡面的視訊幀,實現人臉識別時通常會和其他框架搭配使用,比如face_recognition、SeetaFace En

【2018.12.24】python3.7+OpenCV 人臉識別圖片+攝像頭)

一、識別影象中的人臉個數。註釋寫的很好(\(^o^)/恩) #!/practice/Study_Test python # -*- coding: utf-8 -*- # @Time : 2018/12/23 21:19 # @Author : yb.w # @File : ima