Как устранить недостаточную ошибку памяти в ROS openCV? - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать образ шахматной доски с opencv и ROS, но он выдает ошибку: изображение, которое я загружаю здесь , содержит скриншот командной строки с ошибкой.

и ссылка содержит код.

Я попытался создать изображение шахматной доски с помощью ROS и openCV, но при запуске узла, который создает изображение и публикует его, возникает ошибка с выдачей ошибки.

#include "ros/ros.h"
#include <opencv2/highgui/highgui.hpp>
#include <image_transport/image_transport.h>
#include <sensor_msgs/image_encodings.h>
#include <cv_bridge/cv_bridge.h>

using namespace cv;
int main(int argc , char **argv){
    ros::init(argc , argv ,"cb_publisher");
    ros::NodeHandle n("~");
    image_transport::ImageTransport it(n);
    image_transport::Publisher pub_image_raw;
    int x=argv[1];
    int y=argv[2];
    int z=argv[3];
    //int d=y/z;
    unsigned char color =0;

    cv_bridge::CvImagePtr frame;
    cv::Mat img(x,y,CV_8UC3,cv::Scalar(0,0,0));
    for (int i=0;i<x;i++){
        color=~color;
        for (int j=0;j<y;j++){
            cv::Mat ROI=frame -> image(Rect(i,j));
            ROI.setTo(cv::Scalar(180,180,180));
            color=~color;
        }
    } 

    pub_image_raw =it.advertise("image" , 1);

    ros::Rate loop_rate(10);
    while(ros::ok()){
        pub_image_raw.publish(frame ->toImageMsg());
        ros::spinOnce();
        loop_rate.sleep();    
    }
    return 0;
}

1 Ответ

0 голосов
/ 24 мая 2018

Посмотрите на этот огромный запрос выделения памяти.Откуда это взялось?

Я бы сказал, что это из-за

int x=argv[1];

. Вы должны преобразовать string в int вместо назначения адреса памяти в целое число.

Если тип argv равен char **, то какой будет тип argv[1]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...