ChangEyes 2015-03-19 14:42 采纳率: 10.5%
浏览 2336

想用canny算法边缘检测摄像头采集的图片,哪里出错了

#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,我只是机械地把两段代码组合到了一块,不知道哪里出错了(哭~)
求大神能帮帮忙看一下,谢谢~

  • 写回答

1条回答 默认 最新

  • devmiao 2015-03-19 16:04
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!