安装C++链接库

$ sudo apt-get install libopencv-dev

示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>  
#include <iostream>             
#include <opencv2/opencv.hpp>   // OpenCV's C++
using namespace cv;
using namespace std;

const int DEFAULT_CAMERA_WIDTH  = 640;
const int DEFAULT_CAMERA_HEIGHT = 480;
const char *windowName = "Cartoonifier";   

int main(int argc, char *argv[])
{
    VideoCapture camera;    
    Mat camera_frame;
    Mat disp_frame; 

    // 打开摄像机
    try {
        camera.open(0);
    } catch (cv::Exception &e) {}

    if ( !camera.isOpened() ) {
        cerr << "ERROR: Could not access the camera !" << endl;
        exit(1);
    }

    // 设置摄像机分辨率
    camera.set(CAP_PROP_FRAME_WIDTH,  DEFAULT_CAMERA_WIDTH);
    camera.set(CAP_PROP_FRAME_HEIGHT, DEFAULT_CAMERA_HEIGHT);

    // 设置GUI显示窗口
    namedWindow(windowName); 
   
    while (true) {
        // 从摄像机读取一帧数据       
        camera >> camera_frame;
        if( camera_frame.empty() ) {
            cerr << "ERROR: Could not grab the next camera frame." << endl;
            exit(1);
        }
       
        // 反转图像: 1 - 左右, 0 - 上下, -1 - 上下左右
        flip(camera_frame,disp_frame, 1);
        // 显示图像
        imshow(windowName, disp_frame);
        // 必须调用waitKey才能刷新图像
        int keypress = waitKey(20);     
        if (keypress == 27) { 
            break;
        }
    }//end while

    return 0;
}

编译选项:

-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_videoio       

将彩色图像转换线条画:

Mat gray;
Mat edges;
Mat mask;

// 彩色转灰度(输入,输出,模式)
cvtColor(disp_frame, gray, COLOR_BGR2GRAY);    
// 模糊处理(生成线条比较纯净)
medianBlur(gray,mask,7);  
// 生成线条画(输入,输出,参数)                       
Laplacian(mask, edges, CV_8U,5);    
// 参数3表示阈值               
threshold(edges, disp_frame, 80, 255, THRESH_BINARY_INV);

图像缩放:

Size size;
size.width  = 160;
size.height = 120;
Mat img = Mat(size,CV_8UC3);
resize(gray,img,size,0,0,INTER_LINEAR);