opencv学习(七)(opencv3.0.0+VS2012+win7)打开摄像头并且进行边缘检测加上了滑动条

#include "cv.h"
#include "highgui.h"
#include <opencv2/highgui/highgui.hpp>  
using namespace cv;
char wndname[] = "Edge";
char tbarname[] = "Threshold";
int edge_thresh = 1;
IplImage *frame, *cedge = 0, *gray = 0, *edge = 0;

// 定义跟踪条的 callback 函数
void on_trackbar(int h)
{
}

int main( int argc, char** argv )
{
	VideoCapture cap(0);//在<opencv2/highgui/highgui.hpp>中,win7摄像头只能这样打开      
    if(!cap.isOpened())  
    {  
        return -1;  
    } 
	Mat framemat;//每一帧画面
	// 循环捕捉,直到用户按键跳出循环体
    bool stop = false;  
    while(!stop)
	{	
		cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar);
		cap>>framemat;
		frame = &IplImage(framemat);
		// Create the output image
		cedge = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 3);
		// 将彩色图像转换为灰度图像
		gray = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 1);
		edge = cvCreateImage(cvSize(frame->width,frame->height), IPL_DEPTH_8U, 1);
		cvCvtColor(frame, gray, CV_BGR2GRAY);
		cvSmooth( gray, edge, CV_BLUR, 3, 3, 0 );
		cvNot( gray, edge );//将src中的每一个元素的每一位取反,然后把结果赋给dst。
		// 对灰度图像进行边缘检测
		cvCanny(gray, edge, (float)edge_thresh, (float)edge_thresh*3, 3);
		cvZero( cedge );
		cvCopy( frame, cedge, edge );
		cvNamedWindow(wndname, 1);
		cvShowImage(wndname, cedge);
		if(waitKey(30) >=0) 
			stop = true;  
    }
    // Wait for a key stroke; the same function arranges events processing
    cvReleaseImage(&gray);//注意不要释放frame,会报错
    cvReleaseImage(&edge);
    cvDestroyWindow(wndname);
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
////////////////////////////////////////////////////////////////////// // 使用说明: // 1. 安装VS2008 // 2. 安装OpenCV2.0 // 3. 安装cmake2.8.6 // 4. 通过cmake生成可以被VC++ 2008调用的OpenCV动态库 // 5. 配置Windows环境变量Path,将OpenCV2.0安装后的bin文件夹目录添加入用户变量 // 使得Path=.../bin // (...是OpenCV2.0安装后的program files下的目录全路径) // 6. 打开VC++ 2008,菜单中的工具→选项→项目和解决方案→VC++目录 // 在显示以下内容的目录中, // 先选中可执行文件,加入目录...\bin // 再选中包含文件,加入目录...\include\opencv // 再选中库文件,加入目录...\lib // (...是OpenCV2.0安装后的program files下的目录全路径) // 7. 新建MFC对话框项目VideoPlayer // 然后再在它的属性里去掉更换Unicode的字符集为多字节集 // 配置链接器的输入依赖项cxcore200.lib cv200.lib highgui200.lib // 8. 或者是不进行7的操作,直接将本程序对新建的VideoPlayer对话框项目进行覆盖 // 然后再对其中的VideoPlayer对话框项目配置属性进行修改 ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // 功能说明: // 1. slider控件、Picture控件、打开按钮、播放按钮、暂停按钮、停止按钮 // 2. 实现视频的加载、播放、暂停、停止,以及通过滑动进行视频播放进度的控制 ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // 存在的问题: // 1. 有些视频并不是有多少帧就多少帧结尾 // 比如用屏幕录像机录像的avi,比如录了帧,它有时会丢帧, // 丢帧的那个位置,无法用IplImage的图像空间来加载视图,那程序调试就会报错 // 2. 基本的功能都实现了,就缺验证它的执行效率,还有是否会存在内存泄漏 ////////////////////////////////////////////////////////////////////// 解压密码和相关信息参看http://www.cnblogs.com/huangweilin/archive/2012/05/18/2507764.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值