FaceDetect

Post Reply
minihooker
Posts: 54
Joined: Tue Apr 08, 2014 9:40 am

FaceDetect

Post by minihooker »

http://smartcj.com/wiki/doku.php?id=ru:facedetect
Не компилится код.
Выдает ошибку:

Code: Select all

$ g++ `pkg-config --cflags --libs opencv` face.cpp `pkg-config --libs opencv` -o face_scj
face.cpp:48:2: warning: no newline at end of file
face.cpp: In function 'int main(int, const char**)':
face.cpp:44: error: no match for 'operator<<' in 'std::cout << faces.std::vector<_Tp, _Alloc>::operator[] [with _Tp = cv::Rect_<int>, _Alloc = std::allocator<cv::Rect_<int> >](((long unsigned int)i))'
/usr/include/c++/4.2/ostream:112: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& (*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:121: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:131: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:169: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:173: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:177: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:92: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:184: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:106: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:195: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:204: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:208: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:213: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:217: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:225: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:229: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:120: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/local/include/opencv2/core/operations.hpp:3554: note:                 std::ostream& cv::operator<<(std::ostream&, const cv::Formatted&)
/usr/local/include/opencv2/core/operations.hpp:3541: note:                 std::ostream& cv::operator<<(std::ostream&, const cv::Mat&)
/usr/local/include/opencv2/core/operations.hpp:2636: note:                 cv::FileStorage& cv::operator<<(cv::FileStorage&, const char*)
/usr/local/include/opencv2/core/operations.hpp:2634: note:                 cv::FileStorage& cv::operator<<(cv::FileStorage&, const std::string&)
$ cd ..
$ cd face
$ g++ `pkg-config --cflags --libs opencv` face.cpp `pkg-config --libs opencv` -o face
face.cpp:48:2: warning: no newline at end of file
face.cpp: In function 'int main(int, const char**)':
face.cpp:44: error: no match for 'operator<<' in 'std::cout << faces.std::vector<_Tp, _Alloc>::operator[] [with _Tp = cv::Rect_<int>, _Alloc = std::allocator<cv::Rect_<int> >](((long unsigned int)i))'
/usr/include/c++/4.2/ostream:112: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& (*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:121: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:131: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:169: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:173: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:177: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:92: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:184: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:106: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:195: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:204: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:208: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:213: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:217: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:225: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:229: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:120: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/local/include/opencv2/core/operations.hpp:3554: note:                 std::ostream& cv::operator<<(std::ostream&, const cv::Formatted&)
/usr/local/include/opencv2/core/operations.hpp:3541: note:                 std::ostream& cv::operator<<(std::ostream&, const cv::Mat&)
/usr/local/include/opencv2/core/operations.hpp:2636: note:                 cv::FileStorage& cv::operator<<(cv::FileStorage&, const char*)
/usr/local/include/opencv2/core/operations.hpp:2634: note:                 cv::FileStorage& cv::operator<<(cv::FileStorage&, const std::string&)
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: FaceDetect

Post by admin »

face.cpp:48:2: warning: no newline at end of file

не скопировалась последняя строка видимо
Don't forget to run script update
minihooker
Posts: 54
Joined: Tue Apr 08, 2014 9:40 am

Re: FaceDetect

Post by minihooker »

добавил Enter в конце, все равно ошибки:

Code: Select all

$ g++ `pkg-config --cflags --libs opencv` face.cpp `pkg-config --libs opencv` -o face
face.cpp: In function 'int main(int, const char**)':
face.cpp:44: error: no match for 'operator<<' in 'std::cout << faces.std::vector<_Tp, _Alloc>::operator[] [with _Tp = cv::Rect_<int>, _Alloc = std::allocator<cv::Rect_<int> >](((long unsigned int)i))'
/usr/include/c++/4.2/ostream:112: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& (*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:121: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:131: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:169: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:173: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:177: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:92: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:184: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:106: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:195: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:204: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:208: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:213: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:217: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:225: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/ostream:229: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.2/bits/ostream.tcc:120: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/local/include/opencv2/core/operations.hpp:3554: note:                 std::ostream& cv::operator<<(std::ostream&, const cv::Formatted&)
/usr/local/include/opencv2/core/operations.hpp:3541: note:                 std::ostream& cv::operator<<(std::ostream&, const cv::Mat&)
/usr/local/include/opencv2/core/operations.hpp:2636: note:                 cv::FileStorage& cv::operator<<(cv::FileStorage&, const char*)
/usr/local/include/opencv2/core/operations.hpp:2634: note:                 cv::FileStorage& cv::operator<<(cv::FileStorage&, const std::string&)
текст файла face.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;
}

admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: FaceDetect

Post by admin »

А какая версия g++ ?
Don't forget to run script update
minihooker
Posts: 54
Joined: Tue Apr 08, 2014 9:40 am

Re: FaceDetect

Post by minihooker »

поставил версию 4.7.4
программа не компилится

Code: Select all

 /usr/local/bin/g++47 `pkg-config --cflags --libs opencv` face.cpp `pkg-config --libs opencv` -o face 
face.cpp: In function 'int main(int, const char**)': 
face.cpp:44:23: error: no match for 'operator<<' in 'std::cout << faces.std::vector<_Tp, _Alloc>::operator[]<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >(((std::vector<cv::Rect_<int> >::size_type)i))' 
face.cpp:44:23: note: candidates are: 
In file included from /usr/local/lib/gcc47/include/c++/istream:41:0, 
 from /usr/local/lib/gcc47/include/c++/sstream:39, 
 from /usr/local/lib/gcc47/include/c++/complex:45, 
 from /usr/local/include/opencv2/core/core.hpp:59, 
 from /usr/local/include/opencv2/imgproc/imgproc.hpp:50, 
 from face.cpp:1:
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: FaceDetect

Post by admin »

Да, давайте заменим на более универсальный вариант

std::cout << faces;

заменим на

cv::Rect r = faces;
std::cout << cv::format("(%d, %d) ", r.x, r.y);
Don't forget to run script update
minihooker
Posts: 54
Joined: Tue Apr 08, 2014 9:40 am

Re: FaceDetect

Post by minihooker »

получилось, спасибо
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: FaceDetect

Post by admin »

NP
галвное что б работало как надо )
Don't forget to run script update
Post Reply