安装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);
- 阅读全文 -