1. 程式人生 > >用OpenCV從電腦攝像頭讀取視訊流

用OpenCV從電腦攝像頭讀取視訊流

開啟攝像頭,建立了兩個視窗分別顯示彩色影象和二值化影象

#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;
}