Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 打开CV断言失败错误_C++_Opencv_Raspberry Pi_Ros - Fatal编程技术网

C++ 打开CV断言失败错误

C++ 打开CV断言失败错误,c++,opencv,raspberry-pi,ros,C++,Opencv,Raspberry Pi,Ros,我当前遇到以下错误: 错误 背景 我目前正在尝试在运行Ubuntu MATE 16.04 LTS的Rapsberry Pi上使用ROS构建一个自主无人机。解决了目前识别红圈的计算机视觉问题 发生错误是因为圆的输出数组格式不正确。该函数将cv::vector而不是向量向量作为圆数组的类型。这些值也是浮点值,而不是整数 比较以下位置的教程: (发生的情况是,当cv::HoughCircles找到一个圆时,它会尝试访问vec3f矩阵——但在您的例子中,这是一个(空的)整数cv::vector,因此大小

我当前遇到以下错误:

错误 背景
我目前正在尝试在运行Ubuntu MATE 16.04 LTS的Rapsberry Pi上使用ROS构建一个自主无人机。解决了目前识别红圈的计算机视觉问题

发生错误是因为圆的输出数组格式不正确。该函数将cv::vector而不是向量向量作为圆数组的类型。这些值也是浮点值,而不是整数

比较以下位置的教程:


(发生的情况是,当cv::HoughCircles找到一个圆时,它会尝试访问vec3f矩阵——但在您的例子中,这是一个(空的)整数cv::vector,因此大小断言失败。)

索引在某个地方超出了范围。根据调试器,上述代码中的哪些语句会导致此异常?使用
会导致出现错误
'Vec3f'未在此范围内声明
我应该使用
Vec3b
?因此我想我理解问题所在。由于矢量在新的OpenCV中不存在,它只使用
std::vector类
,如图所示,我们需要将其声明为
cv::Vec3f
,以防OpenCV被桥接的软件。不过,这是正确的答案,谢谢!我仍然得到OpenCV错误:断言失败,即使代码是:cv::Vec3f circ;cv::Mat模糊;cv::霍夫圆(模糊、圆环、cv_-HOUGH_梯度、1、20、50、30、0、0);有什么想法吗?@sqp_125试试看我链接的教程。
OpenCV Error: Assertion failed (0 <= i && i < (int)vv.size()) in getMat_, file 

/tmp/binarydeb/ros-kinetic-opencv3-3.1.0/modules/core/src/matrix.cpp, line 1200

terminate called after throwing an instance of 'cv::Exception'

what():  /tmp/binarydeb/ros-kinetic-opencv3-3.1.0/modules/core/src/matrix.cpp:1200:

error: (-215) 0 <= i && i < (int)vv.size() in function getMat_
cv::Size strel_size;
strel_size.width = 3; 
strel_size.height = 3; 
cv::Mat strel = cv::getStructuringElement(cv::MORPH_ELLIPSE, 
                    strel_size);
cv::morphologyEx(img_bin, intr_ptr, cv::MORPH_OPEN, strel,
        cv::Point(-1,-1), 3);

//cv::medianBlur(intr_ptr, copy_ptr, 7);
cv::bitwise_not(intr_ptr,intr_ptr);
cv::GaussianBlur(intr_ptr, intr_ptr, cv::Size(7,7), 2, 2);
cv::vector< cv::vector<int> > circles;
cv::HoughCircles(intr_ptr, circles, CV_HOUGH_GRADIENT, 1, 70, 140, 15, 20, 
                    400);

for(size_t i = 0; i < circles.size(); i++) {
    cv::Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
    int radius = cvRound(circles[i][2]);
    cv::circle(cv_ptr->image, center, 3, cv::Scalar(0,255,0), -1, 8, 0);
    cv::circle(cv_ptr->image, center, radius + 1, cv::Scalar(0,255,0), 
               2, 8, 0);
    ROS_INFO("x: %d, y: %d, r: %d\n", center.x, center.y, radius);
}

//cv::imshow(OPENCV_WINDOW1, cv_ptr->image);
cv::imshow(OPENCV_WINDOW2, cv_ptr->image);
//cv::imshow(OPENCV_WINDOW3, copy_ptr->image);

cv::waitKey(3);