OpenCV使用imgproc函数时给出错误

OpenCV Gives an error when using the imgproc functions

本文关键字:出错 错误 函数 使用 imgproc OpenCV      更新时间:2023-10-16

当我编译并运行这段代码时,我得到一个错误。它可以编译,但是当我尝试运行它时,它给出了以下错误:

应用程序请求运行时以不寻常的方式终止。

这是代码:

#include <opencv2/opencv.hpp>
#include <string>
int main() {
    cv::VideoCapture c(0);
    double rate = 10;
    bool stop(false);
    cv::Mat frame;
    cv::namedWindow("Hi!");
    int delay = 1000/rate;
    cv::Mat corners;
    while(!stop){
        if(!c.read(frame))
            break;
        cv::cornerHarris(frame,corners,3,3,0.1);
        cv::imshow("Hi!",corners);
        if(cv::waitKey(delay)>=0)
            stop = true;
    }
    return 0;
}

BTW,我得到同样的错误时,使用Canny边缘检测器

您的corners矩阵被声明为一个变量,但是没有为它分配内存。frame变量也是一样。首先,你必须创建一个足够大的矩阵来容纳图像。

我建议你先看看cvCreateImage,这样你就可以了解基本图像是如何创建和处理的,在你开始使用视频流之前。

确保已准备好捕获,并且图像正常:

if(!cap.IsOpened())
   break;
if(!c.read(frame))
        break;
if(frame.empty())
    break;

在使用角检测器之前,您需要将图像转换为灰度:

cv::Mat frameGray;
cv::cvtColor(frame, frameGray, CV_RGB2GRAY);
相关文章: