#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
/// 全局变量
Mat src, src_gray;
Mat dst, detected_edges;
int edgeThresh = 1;
int lowThreshold;
int const max_lowThreshold = 100;
int ratio = 3;
int kernel_size = 3;
char* window_name = "Edge Map";
/**
- @函数 CannyThreshold
-
@简介: trackbar 交互回调 - Canny阈值输入比例1:3
/
void CannyThreshold(int, void)
{
/// 使用 3x3内核降噪
blur( src_gray, detected_edges, Size(3,3) );/// 运行Canny算子
Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );/// 使用 Canny算子输出边缘作为掩码显示原图像
dst = Scalar::all(0);src.copyTo( dst, detected_edges);
imshow( window_name, dst );
}
/** @函数 main /
int main( int argc, char* argv )
{
/// 装载图像
Mat src;
VideoCapture cam(0);
if(!cam.isOpened()) exit(0);
/// 创建显示窗口
namedWindow( window_name, CV_WINDOW_AUTOSIZE );
while (true)
{
cam >> src;
if( !src.data )
{ return -1; }
/// 创建与src同类型和大小的矩阵(dst)
dst.create( src.size(), src.type() );
/// 原图像转换为灰度图像
cvtColor( src, src_gray, CV_BGR2GRAY );
/// 创建trackbar
createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );
/// 显示图像
CannyThreshold(0, 0);
if(27 == waitKey(30))
break;
/// 等待用户反应
}
return 0;
}
程序编译成功,但运行出错
Unhandled exception at at 0x7543969B in test.exe: Microsoft C++ exception: cv::Exception at memory location 0x003FF588.
初学opencv,我只是机械地把两段代码组合到了一块,不知道哪里出错了(哭~)
求大神能帮帮忙看一下,谢谢~