将uchar转换为int,然后转换为字符串会导致崩溃

converting uchar to int then to string causes crash

本文关键字:转换 字符串 崩溃 uchar int 然后      更新时间:2023-10-16

我正试图用Opencv将RGB图像的像素值写入文件。基本上,文件将由等值组成

R-G-B

125-12-54

4-47-2003

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

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到字符串的转换不起作用。我很困惑。有什么建议吗?我一定错过了一些琐碎的东西。

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

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,这在后来的几个函数中影响了我。