все, у меня есть вопрос, который хочу задать вам.
osg::ref_ptr< osg::Image > finalImage =geoImage.getImage();
Тип finalImage - osg::image
, но я хочу сохранить финал в rocksdb (это база данных KV), поэтому finalImage должен конвертироваться в string.when, я хочуиспользуйте этот finalImage, я должен преобразовать эту строку в osg :: image.так что все, вы можете дать мне несколько советов! Спасибо.Я использую opencv, чтобы сделать это, но не удалось. Коды следующим образом:
//osg::iamge convert to cv::mat to string
osg::image *finalImage = geoImage.getImage();
cv::Mat imgcv(finalImage ->t(), finalImage ->s(), CV_8UC3);
imgcv.data = (uchar*)finalImage ->data();
cv::flip(imgcv, imgcv, 0);
cv::cvtColor(imgcv, imgcv, CV_RGB2BGR);
cv::imshow("change window",imgcv);
std::string image_data(imgcv.begin(), imgcv.end<unsigned char>());
//string convert to cv::mat to osg::image
std::vector<uchar> vectordata(imageData.begin(), imageData.end());
cv::Mat data_mat(vectordata, true);
cv::Mat image(cv::imdecode(data_mat, 1));//put 0 if you want greyscale
cv::imshow("change window", data_mat);
osg::ref_ptr< osg::Image > cvImage = new osg::Image;
cvImage->setImage(data_mat.cols, data_mat.rows, 3, GL_BGR, GL_BGR,
GL_UNSIGNED_BYTE, data_mat.data, osg::Image::NO_DELETE, 1);
osgDB::writeImageFile(*cvImage, "cvImage.jpg", _packager->getOptions());