VS2015 + OpenCV 3.1.0,代碼:
Mat src = imread("E:\666.jpg", CV_LOAD_IMAGE_ANYCOLOR);
報錯:error C2022: “438”: 對字符來說太大。
C/C++ 字符串字面量中 \ 是轉義字符。\6 被視為八進制轉義序列 \66(即十進制 54),后續 6 又構成新的轉義,導致編譯器嘗試解析超出字符範圍的數值,報「對字符來說太大」。
"E:\\666.jpg"(每個 \ 寫成 \\)。"E:/666.jpg"(Windows API 支持正斜杠,跨平台推薦)。R"(E:\666.jpg)"。#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat src = imread("E:/666.jpg", IMREAD_COLOR); // 推薦寫法
if (src.empty()) {
std::cerr << "圖像加載失敗!路徑檢查:E:/666.jpg" << std::endl;
return -1;
}
namedWindow("MyWindow", WINDOW_AUTOSIZE);
imshow("MyWindow", src);
waitKey(0);
return 0;
}
imread_multi 或轉碼,建議路徑純 ASCII。CV_LOAD_IMAGE_ANYCOLOR 為舊常量,新版推薦 IMREAD_COLOR / IMREAD_UNCHANGED。字符串路徑中的反斜杠必須轉義或改用正斜杠,是 C/C++ 基礎也是 OpenCV 入門第一課。