c++ opencv 在做图像处理时,需要进行角点检测,但是定义完数组,并且运行角点检测的函数后,无法赋值,经过检测应该不是参数的问题导致没有输出值,主要问题应该在于数组定义这里,不知道怎么解决
vector points_corners ;//取角点
int max_corners = 5;//取两个角点即可
double quality_level = 0.1;//角点质量
double min_distance = 50;//小于10的两个角点要合并
int block_size = 12;//常规取值,若分辨率大可增加值
bool use_harris = false;//使用ShiTomasi算法
double k = 0.04;
goodFeaturesToTrack(img_canny, points_corners, max_corners, quality_level, min_distance, Mat(), block_size, use_harris, k); //角点检测
//将检测到的角点绘制到原图上
Point p_left;
Point p_right;
p_left.x = points_corners[0].x + 5;
p_left.y = points_corners[0].y;
p_right.x = points_corners[1].x - 5;
p_right.y = points_corners[1].y;
报错是在p_left.x = points_corners[0].x + 5这里,报错是0x00007FF63F151E63 处有未经处理的异常(在 contact angle.exe 中): 0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突。
我试过在初始化vector这里就进行赋值,但是也是同样的报错,所以应该是初始化就有问题了
我需要从角点检测这个函数中得到两个点的坐标,并进行使用,有什么可以解决的方法吗
能发一下完整代码吗?
你的角点检测结果是空的,取下标越界报错。
角点检测函数goodFeaturesToTrack调用失败,没有获取到角点坐标,所以变量points_corners内没有一个可以使用的值。
goodFeaturesToTrack有返回值吗,有的话打印一下错误码,根据错误码看看能不能分析什么原因引起的。
再一个,检查一下goodFeaturesToTrack的各个参数是否都合适。