前一段时间,自己调用AXIS摄像头采集图片,有几个需要注意的点,总结了一下。
- 连接摄像头前先根据摄像头的ip修改PC机的ip;
- 给摄像头接通电源后,先用浏览器调用摄像头,如调用不成功,将浏览器模式给为急速模式或换其他浏览器;
- 将每一帧图片都采集并保存,并实现手动按键保存一张图片。
mageGet::ImageGet() { const std::string videoStreamAddress = "http://192.168.0.90/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg"; cap.open(videoStreamAddress); if (!cap.isOpened()) //如果视频不能正常打开则返回 { cout << "cant open the cap!" << endl; return; } } void ImageGet::Image_ReadImage() { while (1) { cap >> frame;//等价于cap.read(frame); if (frame.empty()) //如果某帧为空则退出循环 { cout << "No Image stream!" << endl; break; } namedWindow("video"); imshow("video", frame); char charac; //按键寄存 //--------保存图片-------- I_number++; char a[50] = { '\0' }; sprintf(a, "%s%d%s", "000000", I_number, ".jpg"); string strName(a); string str = strName.substr(strName.size() - 10); strName = "E:\\pioneer\\image\\01\\" + str; imwrite(strName, frame); charac = waitKey(30); if (charac == 'b') { imwrite(strName, frame); cout << "图片已保存" << endl; } //--------------------------- if (charac == 27|charac=='d') { cout << "退出视频-视频总帧数为" << I_number << endl; break; } } }