Page 1 of 5

facedetect

Posted: Fri Aug 04, 2017 9:12 am
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.

Можете помочь разобраться с данной проблемой ?

Re: facedetect

Posted: Fri Aug 04, 2017 3:09 pm
by admin
Вот оно конкретно пишет в чем проблема

konstantin@server:~$ ./face

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

каскады надо указать в параметрах

Re: facedetect

Posted: Sun Aug 06, 2017 7:12 am
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 ?

Re: facedetect

Posted: Thu Aug 10, 2017 7:21 am
by Adrenal1ne
Есть варианты или это не к вам ?

Re: facedetect

Posted: Thu Aug 10, 2017 4:10 pm
by admin
С ходу не скажу, надо смотреть что изменилось в 3.2
Напомните плз через неделю если проблема останется

Re: facedetect

Posted: Fri Aug 11, 2017 6:41 am
by Adrenal1ne
admin wrote:С ходу не скажу, надо смотреть что изменилось в 3.2
Напомните плз через неделю если проблема останется
ну проблема останется, так как только на вас вся надежда.

Re: facedetect

Posted: Sat Aug 12, 2017 4:55 am
by admin
Ок, через неделю если напомните то посмотрим

Re: facedetect

Posted: Tue Sep 12, 2017 8:58 am
by Adrenal1ne
admin wrote:Ок, через неделю если напомните то посмотрим
Напоминаю :)

Re: facedetect

Posted: Tue Sep 12, 2017 10:46 am
by admin
Вы пробовали указать файл с каскадами в параметрах?

Re: facedetect

Posted: Tue Sep 12, 2017 11:04 am
by Adrenal1ne
admin wrote:Вы пробовали указать файл с каскадами в параметрах?
Файл предоставленный в вики не работает, пробовал по разному, но я не специалист в данном вопросе.

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

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