【发布时间】: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