代碼:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
// ...
Mat img = imread("pp.jpg");
imshow("監控圖像", img);
運行報錯:R6010 - abort() has been called,調試器指向 CRT 內部。
OpenCV 2.x **模塊化頭文件**需正確包含順序與宏定義。分別包含 core.hpp、highgui.hpp 易導致:
_DEBUG 宏不一致)。cv::initModule_highgui() 等)。#include "stdafx.h" // VS 預編譯頭(如有)
#include <opencv2/opencv.hpp> // ★ 關鍵:包含所有模塊,保證宏一致性
using namespace cv;
int main() {
Mat img = imread("3.bmp"); // 建議用 bmp/png,避免 jpg 解碼器缺失
if (img.empty()) {
cout << "圖片讀取失敗,檢查路徑" << endl;
return -1;
}
namedWindow("pic", WINDOW_AUTOSIZE);
imshow("pic", img);
waitKey(6000);
return 0;
}
$(OPENCV_DIR)\include、$(OPENCV_DIR)\include\opencv2$(OPENCV_DIR)\lib、$(OPENCV_DIR)\lib\Debug(調試)、$(OPENCV_DIR)\lib\Release(發布)opencv_core249d.lib; opencv_highgui249d.lib; opencv_imgproc249d.lib; ...d 後綴)$(OPENCV_DIR)\bin(DLL 運行時查找)。$(ProjectDir),確保相對路徑圖片可讀。d 後綴。opencv_core249.dll 等 → Path 配置或複製 DLL 到 exe 目錄。imread 返回空 Mat,後續操作觸發斷言失敗 → if(img.empty()) 防禦。OpenCV 2.x VS 配置核心:**統一包含 opencv2/opencv.hpp、嚴格區分 Debug/Release 庫、Path 包含 bin 目錄、圖片讀取判空**。R6010 多為 CRT 檢測到邏輯錯誤(空 Mat 操作、庫混用),按清單排查即可解決。