0
我正在開發opencv中的圖像處理以檢測圖像中的面部並對它們執行進一步處理。我被卡在一個點,在那裏我試圖分析檢測到的面部在圖像中。我想通過他檢測到的面部區域到一個新的功能,並只顯示圖像的一部分,但我得到以下錯誤: 無效參數:「路徑位置類型無匹配的'operator ='(操作數類型'cv :: Mat'和'cv :: Rect_')「aa.cpp/aa/src line 65 C/C++問題從opencv C++中的圖像中提取檢測到的面部以進行進一步處理
如果可能的話請建議我解決一些問題。 三江源
#include "iostream"
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
void detectAndDisplay(Mat frame);
String face_cascade_name = "cascade.xml";
CascadeClassifier face_cascade;
int main(int argc, const char** argv)
{
Mat frame;
frame=imread("Images/img20140226195004.jpg");
if(!face_cascade.load(face_cascade_name))
{
printf("--(!)Error loading\n");
return -1;
}
if(!frame.empty())
{
detectAndDisplay(frame);
}
return 0;
}
void totest(Mat img)
{
imshow("detected",img);
cvtColor(img,img,CV_RGB2GRAY);
cvCanny(img,img,20,100,3);
imshow("edged",img);
}
void detectAndDisplay(Mat frame)
{
std::vector<Rect> faces;
Mat frame_gray;
std::vector<Rect> fff;
cvtColor(frame, frame_gray, CV_BGR2GRAY);
equalizeHist(frame_gray, frame_gray);
face_cascade.detectMultiScale(frame_gray, faces, 1.1, 3, 0, Size(115,115));
int x;
for(size_t i = 0; i < faces.size(); i++)
{
x++;
Point center(faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5);
ellipse(frame, center, Size(faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);
Mat img;
img=faces[i];
totest(img);
}
imshow("faces", frame);
waitKey();
}