【问题标题】:Access violation reading location OpenCV Canny function访问冲突读取位置 OpenCV Canny 函数
【发布时间】:2015-09-14 18:13:50
【问题描述】:

我在 OpeCV 中的项目有问题。我想得到图片,这是两张图片相减的结果,然后使用 Canny Edge Detector 得到标记的边缘,但只有我得到的是一个例外。

这是一个例外的打印屏幕:

这是我的代码:

#pragma once
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    Mat pierwszy = imread("one.jpg", IMREAD_COLOR);
    Mat drugi = imread("two.jpg", IMREAD_COLOR);
    Mat wynik;
    subtract(pierwszy, drugi , wynik);
    imwrite("../../images/wynik.jpg", wynik);
    Canny(wynik, wynik, 33, 100);
    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", wynik);
    waitKey(0);
    return 0;
}

Mat 的对象大小相同。

【问题讨论】:

  • 在您的代码中添加一个 try / catch 块,以获取更多信息:try { ... } catch(cv::Exception e) { // 打印错误消息 } 。另外,你可以在调试模式下运行你的代码,找出它在哪一行崩溃?
  • 您需要在灰度 CV_8UC1 图像上计算 canny。 wynik 可能是 CV_8UC3
  • 抱歉我忘了补充,我的例外出现在 Canny(wynik, wynik, 33, 100);
  • 利用 break 并查看堆栈跟踪以缩小搜索范围。

标签: c++ opencv canny-operator


【解决方案1】:

要使用 Cany Edge Detector,我们需要像 Miki 所说的那样制作灰度图像。现在我将函数cvtColorCOLOR_BGR2GRAY 一起使用,我的代码如下所示:

#pragma once
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    Mat pierwszy = imread("one.jpg", IMREAD_COLOR);
    Mat drugi = imread("two.jpg", IMREAD_COLOR);
    Mat wynik;
    subtract(pierwszy, drugi , wynik);
    imwrite("../../images/wynik.jpg", wynik);
    Mat wynik_gray;
    cvtColor(wynik, wynik_gray, COLOR_BGR2GRAY);
    Canny(wynik_gray, wynik_gray, 33, 100);
    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", wynik_gray);
    waitKey(0);
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2016-05-28
    相关资源
    最近更新 更多