facedetect

Adrenal1ne
Posts: 156
Joined: Tue Oct 22, 2013 6:44 am

facedetect

Post by Adrenal1ne »

Добрый день!
Установил opencv как здесь описано
https://www.linuxhint.com/how-to-instal ... on-ubuntu/

создал файл facecj.cpp как в мануале

Code: Select all

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

const char* keys = 
{
	"{i|input| |The source image}"
	"{o|outdir| |The output directory}"
	"{c|cascade| |The cascade file}"
};

int main(int argc, const char** argv)
{
	cv::CommandLineParser parser(argc, argv, keys);
	std::string infile = parser.get<std::string>("input");
	std::string outdir = parser.get<std::string>("outdir");
	std::string cascade_file = parser.get<std::string>("cascade");

	cv::CascadeClassifier cascade;
	if (cascade_file.empty() || !cascade.load(cascade_file))
	{
		std::cout << cv::format("Error: cannot load cascade file! \n");
		return -1;
	}

	cv::Mat src = cv::imread(infile);
	if (src.empty())
	{
		std::cout << cv::format("Error: cannot load source image!\n");
		return -1;
	}

	cv::Mat gray;
	cv::cvtColor(src, gray, CV_BGR2GRAY);
	cv::equalizeHist(gray, gray);

	std::vector<cv::Rect> faces;
	cascade.detectMultiScale(gray, faces, 1.2, 3);

	cv::Mat src_copy = src.clone();
	for (int i = 0; i < faces.size(); i++)
	{
		std::cout << faces[i];
	}

	return 0;
}
скомпилировал

Code: Select all

g++ `pkg-config --cflags --libs opencv` facecj.cpp `pkg-config --libs opencv` -o facecj
при тестовом запуске получаю ошибку

Code: Select all

konstantin@server:~$ ./facecj 
OpenCV Error: Bad argument (undeclared key 'input' requested) in getByName, file /home/konstantin/my_scpipts/opencv/opencv-3.2.0/modules/core/src/command_line_parser.cpp, line 136
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/konstantin/my_scpipts/opencv/opencv-3.2.0/modules/core/src/command_line_parser.cpp:136: error: (-5) undeclared key 'input' requested in function getByName

Aborted (core dumped)
Нашел на github другой cpp файл
https://github.com/opencv/opencv/blob/m ... detect.cpp

скомпилировал его и получаю вывод вида
konstantin@server:~$ ./face

WARNING: Could not load classifier cascade for nested objects
ERROR: Could not load classifier cascade

This program demonstrates the cascade recognizer. Now you can use Haar or LBP features.
This classifier can recognize many kinds of rigid objects, once the appropriate classifier is trained.
It's most known use is for faces.
Usage:
./facedetect [--cascade=<cascade_path> this is the primary trained classifier such as frontal face]
[--nested-cascade[=nested_cascade_path this an optional secondary classifier such as eyes]]
[--scale=<image scale greater or equal to 1, try 1.3 for example>]
[--try-flip]
[filename|camera_index]

see facedetect.cmd for one call:
./facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="../../data/haarcascades/haarcascade_eye_tree_eyeglasses.xml" --scale=1.3

During execution:
Hit any key to quit.
Using OpenCV version 3.2.0
я так понимаю, что загвоздка в синтаксисе cpp файла и возможно он не подходит для opencv 3.2.

Можете помочь разобраться с данной проблемой ?
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: facedetect

Post by admin »

Вот оно конкретно пишет в чем проблема

konstantin@server:~$ ./face

WARNING: Could not load classifier cascade for nested objects
ERROR: Could not load classifier cascade

каскады надо указать в параметрах
Don't forget to run script update
Adrenal1ne
Posts: 156
Joined: Tue Oct 22, 2013 6:44 am

Re: facedetect

Post by Adrenal1ne »

admin wrote:Вот оно конкретно пишет в чем проблема

konstantin@server:~$ ./face

WARNING: Could not load classifier cascade for nested objects
ERROR: Could not load classifier cascade

каскады надо указать в параметрах
Я просто показал, что с другим файлом работает и что файл который представлен на сайте с версией 3.2 не работает.
Работающий файл это тестовый файл из установочного комплекта, который не подходит для работы со смартом.

как подправить ваш файл, чтобы он работал в версии 3.2 ?
Adrenal1ne
Posts: 156
Joined: Tue Oct 22, 2013 6:44 am

Re: facedetect

Post by Adrenal1ne »

Есть варианты или это не к вам ?
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: facedetect

Post by admin »

С ходу не скажу, надо смотреть что изменилось в 3.2
Напомните плз через неделю если проблема останется
Don't forget to run script update
Adrenal1ne
Posts: 156
Joined: Tue Oct 22, 2013 6:44 am

Re: facedetect

Post by Adrenal1ne »

admin wrote:С ходу не скажу, надо смотреть что изменилось в 3.2
Напомните плз через неделю если проблема останется
ну проблема останется, так как только на вас вся надежда.
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: facedetect

Post by admin »

Ок, через неделю если напомните то посмотрим
Don't forget to run script update
Adrenal1ne
Posts: 156
Joined: Tue Oct 22, 2013 6:44 am

Re: facedetect

Post by Adrenal1ne »

admin wrote:Ок, через неделю если напомните то посмотрим
Напоминаю :)
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: facedetect

Post by admin »

Вы пробовали указать файл с каскадами в параметрах?
Don't forget to run script update
Adrenal1ne
Posts: 156
Joined: Tue Oct 22, 2013 6:44 am

Re: facedetect

Post by Adrenal1ne »

admin wrote:Вы пробовали указать файл с каскадами в параметрах?
Файл предоставленный в вики не работает, пробовал по разному, но я не специалист в данном вопросе.

Файл который я нашел работает, но работает только с GUI интерфейсом. Указываешь этому файлу картинку, он картинку открывает и обводит лицо красным кругом, то есть работает как пример.

Как скрестить два этих файла, чтобы работало, так как задумывалось автором smartcj я не знаю, поэтому и прошу у вас помощи.
Post Reply