使用opencv,利用笔记本摄像头自作自己的面部数据集,目标为1S一张,代码如下:
因为文件的标签是动态变动的,如1.png,2.png,所以利用如下核心代码,进行存储:
int intName[100];
for (int i = 0; i < 100; i++)
{
intName[i] = i;
}
for (int i = 0; i < 10; i++)
{
stringstream ss;
string stringName;
ss << intName[i];
ss >> stringName;
cout << stringName+".png" << endl;
waitKey(2000); 延时
}
完整代码:
#include#include using namespace std; using namespace cv; int main(int argc, char** atgv) { cv::VideoCapture cap; cap.open(0); cv::Mat frame; int intName[10000]; for (int i = 0; i < 10000; i++) { intName[i] = i; } int i = 0; while (true) { stringstream ss; string stringName; ss << intName[i]; ss >> stringName; cap >> frame; resize(frame, frame, cv::Size(0, 0), 0.5, 0.5, 1); cv::imshow("sunshine", frame); imwrite("F:\face\"+ stringName + ".png",frame); waitKey(1000); i++; int c = cv::waitKey(5); if (c == 27 || c == 'q' || c == 'Q' || i == 10000) break; } destroyAllWindows(); return 0; }
这里运用了尺寸缩小,如果是原大小摄像头像素的话(640 X 480),大约一百张图,占内存40多M,如果将像素缩小一半的话,内存大小只有13M。



