2015-11-06 69 views
0

我试图用Opencv将RGB图像的像素值写入文件。基本上,文件会像将uchar转换为int然后转换为字符串导致崩溃

RGB进行价值

125-12-54

4-47-203

没有什么不对的图像,显​​示程序显示它没有任何问题。这是代码的相关部分。

Mat rawData = Mat(1, elementcount, CV_8UC1, UArray); 
image = imdecode(rawData, IMREAD_COLOR); 
... 
    for (int i = 0; i < rows; i++){ 
     for (int t = 0; t < cols; t++){ 
      Vec3b intensity = image.at<Vec3b>(rows, cols); 
      ImageValueToString(intensity); 

我试过以下,但每次的程序崩溃

void ImageValueToString(Vec3b imagevalue){ 
    int blue = imagevalue.val[0]; 
    string blue_string = to_string(blue); // Crash 

void ImageValueToString(Vec3b imagevalue){ 
    int blue = static_cast<int>(imagevalue.val[0]); 
    string blue_string = to_string(blue); // Crash 

void ImageValueToString(Vec3b imagevalue){ 
    uchar blue = imagevalue.val[0]; 
    int blue_int = (int)blue; 
    string blue_string = to_string(blue_int); // Crash 

void ImageValueToString(Vec3b imagevalue){ 
    int blue = imagevalue.val[0]; 
    string s; 
    stringstream out; 
    out << blue; 
    s = out.str(); // crash 

如果我省略字符串转换程序工作。这工作

int red = 5; 
    string red_string = to_string(red); 

但是,从uchar,int转换为字符串转换不起作用。我很困惑。有什么建议么?我必须错过一些细节。

+0

它不清楚,但它看起来像你_casting_一个int数组来字符串? C字符串必须以空字符结尾。 –

+1

您应该看看“格式”功能以及“FileStorage” – Miki

+2

如果在'to_string'函数中发生崩溃,您可能会发生堆损坏。 –

回答

2

当睡眠不足时,我不应该工作。你可以看到,我使用变量的行和列而不是我和t,后来咬了我几个函数。

+0

糟糕!我立即看到了这一点,但很高兴你明白了这一点! – rayryeng