You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV imread读取jpg图片抛出0xC0000409错误如何解决?

OpenCV读取JPG格式图片报错问题说明与解决方案

测试代码

以下是读取本地图片的测试代码:

#include <iostream>
#include <opencv2/opencv.hpp>

int main (int argc, char** argv) {
    auto path = "C:/Users/huhua/Pictures/11.jpg";
    auto img = cv::imread(path);
    if (img.empty()) {
        std::cout << "is empty" << std::endl;
        return 1;
    }
    cv::imshow("demo", img);
    cv::waitKey(0);
    return 0;
}

问题现象

  • 已确认测试路径下的11.jpg文件真实存在,将路径替换为同目录下的11.bmp文件时程序可正常运行、图片正常加载
  • 调试定位到错误抛出位置为libjpeg-turbo/src/jdatasr.c的fill_input_buffer函数,相关代码如下:
fill_input_buffer(j_decompress_ptr cinfo)
{
  my_src_ptr src = (my_src_ptr)cinfo->src;
  size_t nbytes;

  // 错误在此处抛出
  nbytes = JFREAD(src->infile, src->buffer, INPUT_BUF_SIZE);
  // 后续代码省略
}

问题根因与修复方案

该问题并非libjpeg相关组件本身的缺陷导致,根源为项目CMake配置不符合规则:
CMAKE_TOOLCHAIN_PATH的配置项被放在了project(xxx)指令之后,而CMake要求CMAKE_TOOLCHAIN_PATH必须在project指令之前配置。配置顺序错误会导致依赖的vcpkg库链接异常,间接引发JPG解码环节的文件读取错误。
将CMAKE_TOOLCHAIN_PATH的配置调整到project指令之前后,问题即可修复。


内容的提问来源于stack exchange,提问作者user3875388

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:27:03