【问题标题】:converting uchar to int then to string causes crash将 uchar 转换为 int 然后转换为 string 会导致崩溃
【发布时间】:2016-02-08 04:12:47
【问题描述】:

我正在尝试使用 Opencv 将 RGB 图像的像素值写入文件。基本上文件将由像

这样的值组成

R-G-B

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 到 string 的转换不起作用。我很困惑。有什么建议?我一定错过了一些琐碎的事情。

【问题讨论】:

  • 不清楚,但看起来您正在将一个int数组转换为字符串? C 字符串必须以 null 结尾。
  • 你应该看看“format”函数,以及“FileStorage”
  • 如果崩溃发生在 to_string 函数中,你可能有堆损坏。

标签: c++ opencv image-processing


【解决方案1】:

我不应该在睡眠不足的情况下工作。

for (int i = 0; i < rows; i++){
    for (int t = 0; t < cols; t++){
        Vec3b intensity = image.at<Vec3b>(rows, cols);

如您所见,我使用变量 rows 和 cols 而不是 i 和 t,这在后来的几个函数中对我不利。

【讨论】:

  • 糟糕!我立即看到了这一点,但很高兴你明白了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 2016-04-14
  • 2015-08-16
  • 1970-01-01
相关资源
最近更新 更多