提示段错误(核心已转存),如何解决?

我注释掉这一句就能跑,cv::imshow("YourDearWindow",mask);

这就是错误

但是这一句我看不出他有什么语法错误;

以下是代码

#include<ros/ros.h> //ros标准库头文件 
/* cv_bridge中包含CvBridge库 */
#include<cv_bridge/cv_bridge.h>
/* ROS图象类型的编码函数 */
#include<sensor_msgs/image_encodings.h>
 /* image_transport 头文件用来在ROS系统中的话题上发布和订阅图象消息 */
#include<image_transport/image_transport.h>
//OpenCV2标准头文件 
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
    void convert_callback(const sensor_msgs::ImageConstPtr& msg) 
    {
            cv_bridge::CvImagePtr cv_ptr; // 声明一个CvImage指针的实例 
        try
        {    
            cv_ptr = cv_bridge::toCvCopy(msg,sensor_msgs::image_encodings::BGR8); 
        }
        catch(const std::exception& e)
        {
            std::cerr << e.what() << '\n';
        }
            cv::Mat Image = cv_ptr->image;
            cv::Mat hsv = Image.clone();
            cv::Mat mask = Image.clone();
            cv::inRange(hsv, cv::Scalar(20,43,46), cv::Scalar(90,255,255), mask);  
            cv::cvtColor(Image,hsv,cv::COLOR_BGR2HSV);
            // cv::bitwise_and(cv_ptr->image,10,mask=mask);

            cv::namedWindow("YourDearWindow",cv::WINDOW_NORMAL);
            cv::resizeWindow("YourDearWindow", 480, 320);
            if(mask.empty())
                ROS_INFO("NULL");
            else
                ROS_INFO("okok");
            cv::imshow("YourDearWindow",mask);
            
            cv::waitKey(3);
    }
int main(int argc, char* argv[]) 
{
    ros::init(argc,argv,"image_look_HeiBai");
    ros::NodeHandle nh; 
    image_transport::ImageTransport it(nh);
    cv_bridge::CvImagePtr cv_bridge; 
    image_transport::Subscriber image_sub_= it.subscribe("/camera/rgb/image_raw",10,convert_callback);
    ros::spin();
    return 0;
 }
阅读 577
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏