打开摄像头,创建了两个窗口分别显示彩色图像和二值化图像
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main()
{
//打开摄像头
VideoCapture cap(0);
if (!cap.isOpened()){
cout << "error" << endl;
return -1;
}
//创建窗口
namedWindow("彩色", 1);
namedWindow("黑白", 1);
Mat colorFrame,grayFrame;
while (1){
//获取视频流
cap >> colorFrame;
//0为上下翻转,>0为左右翻转,<0同时上下左右翻转
flip(colorFrame, colorFrame, 1);
//转为灰度图
cvtColor(colorFrame, grayFrame, CV_BGR2GRAY);
//二值化处理
for (int i = 0; i < grayFrame.rows; i++){
for (int j = 0; j < grayFrame.cols; j++){
//获取每个像素点
if (grayFrame.at<uchar>(i, j) < 127){
grayFrame.at<uchar>(i, j) = 0;
}
else{
grayFrame.at<uchar>(i, j) = 255;
}
}
}
//在对应窗口显示图片
imshow("彩色", colorFrame);
imshow("黑白", grayFrame);
if (waitKey(30) >= 0)
break;
}
return 0;
}