-215
opencv
data_error
ai_generated
true
cv::error: (-215:断言失败) !buf.empty() && buf.data != NULL 在函数 'cv::imdecode' 中
cv::error: (-215:Assertion failed) !buf.empty() && buf.data != NULL in function 'cv::imdecode'
ID: opencv/io-imdecode-corrupt-data
90%修复率
87%置信度
1证据数
2024-05-18首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 4.7.0 | active | — | — | — |
| 4.8.0 | active | — | — | — |
| 4.9.0 | active | — | — | — |
根因分析
imdecode 的输入缓冲区为空或包含无法解码的损坏图像数据。
English
The input buffer to imdecode is empty or contains corrupt image data that cannot be decoded.
官方文档
https://docs.opencv.org/4.x/d4/da8/group__imgcodecs.html#ga26a67788faa58ade337f8d28ba0eb19e解决方案
-
Validate the buffer before decoding: check that buf.size() > 0 and optionally check the first few bytes for a valid image signature (e.g., JPEG: 0xFF 0xD8, PNG: 0x89 0x50). Example in C++: if (buf.size() < 4 || buf[0] != 0xFF || buf[1] != 0xD8) { /* handle error */ }. -
If reading from a network stream, use a robust HTTP client that checks Content-Length and verifies the response body is complete before passing to imdecode.
无效尝试
常见但无效的做法:
-
Attempting to decode a buffer read from a file that was truncated mid-write
90% 失败
Truncated data is still non-empty but corrupt; imdecode will fail silently or with assertion error.
-
Passing a buffer that was decoded from base64 without proper validation
85% 失败
Base64 decoding may produce empty or invalid binary data if the input string is malformed.