opencv实验记录一

@opencv实验记录一

一、实验目的
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.翻转
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值