一、实验目的
1.掌握OpenCV的安装与配置2.掌握HighGUI
3.编写简单代码
二、实验内容
1.安装VS2010
2.安装OpenCV2.4
3.进行配置调试
4.利用HighGUI库编程实现从摄像头捕获视频并显示,将窗口标题设为lll
5.对图像进行二值化处理
6.实现鼠标操纵二值化反转
7.保存一张图片并关闭窗口
三、实验代码
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include"opencv2/imgproc/imgproc.hpp"
using namespace cv;
using namespace std;
void OpenCV2_saveVideo();
Mat image,resulth,resulty,resultr;
int alpha_slider; //阈值储存
int alpha=0;//初始阈值
int i=0; //初始判定
int reversel;//反色判定
int exist=0;//结束判定
char key='a';
void on_mouse(int event, int x, int y,int flags,void* param)
{
if( event==CV_EVENT_RBUTTONDOWN)
{
reversel=-1*reversel;
}
else if(event==CV_EVENT_RBUTTONDBLCLK)
{
reversel=2;
}
else
{}
}
void ontrackbar(int,void*)
{
alpha=(double)alpha_slider;
}
int main()
{
cvNamedWindow("这是三秒的正常视频",1);
VideoCapture cap(0);
printf("这是三秒的正常视频");
cvWaitKey(300);
while(i<6)
{
cvWaitKey(500);
cap>>image;
imshow("这是三秒的正常视频",image);
i=i+1;
}
cvDestroyWindow("这是三秒的正常视频");
printf("右键单击翻转,双击退出,左键双击拍照");
cvWaitKey(1400);
reversel=1;
while(1)//进入
{
resulth=image.clone();
cap>>image;
cvtColor(image,resulth,CV_BGR2GRAY);
cv::setMouseCallback("lll",on_mouse,NULL);
VideoWriter writer("C:\\Users\\lenovo\\Desktop\\素材\\VideoTest1.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25.0, Size(640, 480));
threshold(resulth,resulty,100,alpha,CV_THRESH_BINARY);
if(reversel==1)//鼠标翻转二值化
{
imshow("lll",resulty);//二值化输出
createTrackbar( "yuzhi","lll",&alpha_slider,255, ontrackbar );//滑块创建
cvWaitKey(30);
}
else if(reversel==(-1))
{
resultr=resulty.clone();
for(int x = 0;x<resulty.rows;x++)
{
for(int y = 0;y<resulty.cols;y++)
{
resultr.at<uchar>(x,y)= 255-resulty.at<uchar>(x,y);
}
}
//printf("hhhhhh");
imshow("lll",resultr);
createTrackbar( "yuzhi","lll",&alpha_slider,255, ontrackbar );
cvWaitKey(30);
}
else
{
writer.release();
destroyAllWindows();
break;
}
if(key!='p')
{
key=cv::waitKey(30);
}//拍照键盘识别
switch(key)
{
case 'p':
{
if(reversel==1)
{
writer<<resulty;
/* if(waitKey(30)==27);
break;*/
}
else if(reversel==-1)
{
writer<<resultr;
/*if(waitKey(30)==27);
break;*/
}
break;
}
default:
break;
}
//if(exist==1)
//break;
}
//cvDestroyAllWindows();
return 0;
}
四、实验效果
1.原图
2.不同阈值
3.翻转