我正在尝试实现一个简单的 canny 边缘检测器
为了在面部跟踪器中检测发际线。
在进入面部追踪器的主循环之前
下面被注释掉的行打破了我的
程序,给出这个错误信息:
CVTest.exe 中 0x7709c41f 处的未处理异常:Microsoft C++ 异常:cv::Exception at memory location 0x004fb300..
cout << "Hair Line Detection ...";
Mat GrayFace;
threshold( gray, GrayFace, 65, 255, CV_THRESH_BINARY);
// Canny( GrayFace, GrayFace, 1, 150, 3, false );
threshold( GrayFace, GrayFace, 254, 255, CV_THRESH_BINARY );
Mat EdgeDetection;
EdgeDetection = GrayFace;
cout << "Done!" << endl;
作为初学者,我不知道为什么这行代码会破坏程序。
有好心人可以帮帮我吗?
谢谢,
最佳答案
我刚刚注意到您有 2 条阈值线?一次两次对其进行阈值处理的目的是什么? (因为你评论了精明的话)
改变你的
cv::threshold( gray, GrayFace, 65, 255, CV_THRESH_BINARY);
到
cv::threshold(gray, GrayFace, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
让我知道它现在是否有效。使用 cv::imshow("Test GrayFace", GrayFace);
显示新结果。
关于c++ - 精明的边缘检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21678889/