C++的数组传递
C++的数组传递都是通过指针传递的,这样就使得具有使用一个地址.
例如:
int face_features(cv::Mat image,float *gallery_fea){
cv::Mat img_gray;
if (image.channels() != 1)
cv::cvtColor(image, img_gray, cv::COLOR_BGR2GRAY);
else
img_gray = image;
face_recognizer.ExtractFeatureWithCrop(gallery_img_data_color, gallery_points, gallery_fea);
}
在face_features函数中,不必使用return语句将gallery_fea数组返回,因为它使用的是地址传递,而非数值传递.
float face_feature[2048];//定义一个2048大小数组
while(!file.atEnd()) {
QByteArray line = file.readLine();
QString str(line);
str.chop(1);
qDebug()<<lines<<str;
image=cv::imread(str.toStdString());
memset(face_feature,0,sizeof(face_feature));//数组初始化
face_features(image,face_feature);//传递数组的首地址
for (int i=0;i<2048;i++){
ClusterCenters.at<float>(lines,i)=face_feature[i];
}
lines++;
}