Я хочу сохранить изображение cv: Mat в векторный тип? Я написал функцию, но всегда получаю сообщение об ошибке.Исключение с плавающей запятой при преобразовании cv :: Mat image в вектор <float> Тип
#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <cv_bridge/cv_bridge.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <vector>
#include "opencv2/opencv.hpp"
using namespace std;
#ifdef _OPENMP
#include <omp.h>
#endif
# define IM_X 200
# define IM_Y 200
//Globale Variablen:
cv::Mat image;
cv::Mat resize_image;
//Funktionen:
string convertInt(int number);
vector<float> MatToFloatVec(const cv::Mat& mat) ;
void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
try
{
cv::imshow("view", cv_bridge::toCvShare(msg, "bgr8")->image);
cv::waitKey(30);
}
catch (cv_bridge::Exception& e)
{
ROS_ERROR("Could not convert from '%s' to 'CV_32FC1'.", msg->encoding.c_str());
}
}
int main(int argc, char **argv)
{
/*
ROS-Image Subscriber--> siehe Tutorial!!
*/
ros::init(argc, argv, "image_listener");
ros::NodeHandle nh;
cv::namedWindow("view");
cv::startWindowThread();
image_transport::ImageTransport it(nh);
image_transport::Subscriber sub = it.subscribe("/image_raw", 1, imageCallback);
ROS_INFO_STREAM("Hier vor Grey");
std::vector<float>test = MatToFloatVec(image);
}
vector<float> MatToFloatVec(const cv::Mat& mat)
{
return vector<float>(mat.begin<uchar>(), mat.end<uchar>());
}
Я всегда получаю сообщение об ошибке: [INFO] [1433244615,907292392]: Hier VOR Gray Floating исключение точки (ядро сбрасывали)
В чем проблема?
Может кто-нибудь помочь мне
Вы посмотрели на свалку ядра? В какой строке это происходит? – doctorlove
Это происходит, когда функция MatToFloatVec вызывается –
Попробуйте упростить свой код до необходимого для выявления проблемных строк. –