opencv学习笔记(二十五)——实现相机拍照功能

由于相机标定需要多张棋盘照片,所以写了一个相机拍照程序。主要原理是:创建一个滑块,当作相机的快门,然后通过一个回调函数保存窗口的图片。
源代码如下:

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )   //掩藏控制台

#include
#include   
#include


const int g_nMaxValue = 1;
int g_nValue;
IplImage *frame;
char *namecode[14] = {  "1.jpg", "2.jpg", "3.jpg", 
                        "4.jpg","5.jpg", "6.jpg", 
                        "7.jpg", "8.jpg", "9.jpg",
                        "11.jpg", "12.jpg", "13.jpg",
                        "14.jpg"
                     };
int i = 0;
void TakePhoto(int, void*)
{
    i++;
    cvSaveImage(namecode[i-1], frame);
    if (i == 13)
    {
        i = 0;
    }

    std::cout << "拍照成功" << std::endl;
}

int main()
{
    cv::Mat image;

    g_nValue = 0;
    CvCapture *capture = cvCreateCameraCapture(0);
    cvNamedWindow("Camera");

    //创建一个滑块当按钮
    cv::createTrackbar("Photo", "Camera", &g_nValue, g_nMaxValue, TakePhoto);

    while (1)
    {

        frame = cvQueryFrame(capture);
        if (!frame) break;
        cvShowImage("Camera", frame);

        char c = cvWaitKey(33);
        if (c == 27) break;
    }



    return 0;
}

你可能感兴趣的:(opencv)