我是准备使用opencv来做角点检测,代码如下
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void main() {
int maxCorners = 10;
if (maxCorners < 1) {
maxCorners = 1;
}
/// Parameters for Shi-Tomasi algorithm
Mat srcImg = imread("C:/Users/lenovo/Desktop/校正图片.jpg");
imshow("原始图", srcImg);
Mat srcGray;
//转化为灰度图
cvtColor(srcImg, srcGray, CV_BGR2GRAY);
vector<Point2f> corners;
double qualityLevel = 0.01;
double minDistance = 10;
int blockSize = 9;
bool useHarrisDetector = false;
Mat temp = Mat();
double k = 0.04;
/// 查找角点
goodFeaturesToTrack(srcGray,
corners,
maxCorners,
qualityLevel,
minDistance,
temp,
blockSize,
useHarrisDetector,
k);
/// 标出检测到的角点
for (int i = 0; i < corners.size(); i++) {
circle(srcImg, corners[i], 4, Scalar(0, 255, 0), 2, 8, 0);
printf("第%d个点坐标为:(%d,%d)\n",i,(int)corners[i].x,(int)corners[i].y);
}
/// 显示图片
imshow("角点检测", srcImg);
imwrite("C:/Users/lenovo/Desktop/检测图片.jpg",srcImg);
waitKey(0);
return;
}
然后遇到的问题是,代码一直运行到waitKey(0)都是正确的,显示如图
但是当我点击任意按钮时,系统就报错了,具体报错如图:
希望大神能够帮帮忙,谢谢啊。
调试看下报错的代码行,然后找其中变量指针是否越界
看上去是程序最后结束的时候有问题。是不是有越界。
我今天调试的时候也有这个问题,尝试以后大概是因为不能用“CV_BGR2GRAY”转图像格式,换成cv::COLOR_BGR2GRAY可正常运行
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。