如何将变量二进制数据(作为字符串)转换为字节数组
How to convert varbinary data (as string) to byte array?
我有一个变量(BLOB(数据作为字符串(图像数据(
例如
std::string ByteStr = "FF-D8-E0-FF-85 ... " ;
我想将此字符串转换为字节数组(或有用的东西(,然后用作cv::Mat
格式。 我从另一个方法获取字符串。我试图转换,但我得到OpenCV错误。
我得到的错误,
OpenCV 错误:断言失败 (size.width>0 && size.height>0( in cv::imshow,>>file ........\opencv\modules\highgui\src\window.cpp
C++代码,
std::string ByteStr = obj->GetBinaryStr(); // this provide varbinary string
std::vector<uchar> vct;
std::string delimiter = "-";
size_t pos = 0;
std::string token;
while ((pos = ByteStr.find(delimiter)) != std::string::npos) {
token = ByteStr.substr(0, pos);
vct.push_back((uchar)(token.c_str()));
ByteStr.erase(0, pos + delimiter.length());
}
cv::Mat img = cv::imdecode(vct,CV_BGR2GRAY );
cv::namedWindow("MyWindow");
cv::imshow("MyWindow",img);
如何将此字符串转换为cv::Mat
格式。有什么建议吗?
提前致谢
cv::imdecode(vct,CV_BGR2GRAY );
没有任何意义。请使用有意义的内容,例如 cv::imdecode(vct, cv2.IMREAD_GRAYSCALE );
.
此外,还需要将十六进制字符串转换为整数类型。你可以为此使用 strtol。
代码变为类似以下内容:
std::string ByteStr = obj->GetBinaryStr(); // this provide varbinary string
std::vector<uchar> vct;
std::string delimiter = "-";
size_t pos = 0;
std::string token;
while ((pos = ByteStr.find(delimiter)) != std::string::npos) {
token = ByteStr.substr(0, pos);
uchar ucharToken = uchar(strtol(token.c_str(), NULL, 16));
vct.push_back(ucharToken);
ByteStr.erase(0, pos + delimiter.length());
}
cv::Mat img = cv::imdecode(vct, cv::IMREAD_GRAYSCALE);
cv::namedWindow("MyWindow");
cv::imshow("MyWindow",img);
相关文章:
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 如何将这个std::字符串转换为std::基本字符串
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 如何在C++中将十六进制字符串转换为文本数据
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何从字符串转换为双精度*
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- 如何在C++中将 Python 字符串转换为其转义版本?
- 如何在 C++11 中将标准::字符串转换为标准::u32字符串?
- 如何将整数字符串转换为整数的二维向量?
- 使用 "stringstream " 将字符串转换为整数
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 将文件复制到自定义位置,存在字符串转换问题
- 将ANSI C字符串转换为UNICODE
- 如何将节点 V8 字符串转换为 C++ 字符串
- 在C++中将字符串转换为双精度,而无需科学记数法
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 如何在C++中将字符串转换为双精度?
- 将字符串转换为无符号字符数组/字节数组