【发布时间】: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