rulinwsy 2025-03-20 15:45 采纳率: 0%
浏览 18

netcore 在Linux(Centos7)下使用OpenCvSharp4 异常

环境: netcore 8,windows,OpenEuler(Cenos7 x64);
第三方DLL: OpenCvSharp4;
遇到的问题:
在OpenEuler 通过 VideoCapture cam = new VideoCapture(0);报错;提示VideoCapture创建失败(摄像头用Linux自带相机可以使用)

img

在OpenEuler环境中 Cv2.ImRead(file) 报错 ;报错信息只有imread 错误; 其他都没有;(文件可以单独使用,路径和权限没问题)

img

在Windows下面都没有问题

排查过的步骤:

  1. 引用包; 基于Cenos7的运行 ,然后基本吧能引用的环境都引用了

img

  1. 文件路径没问题,权限没问题;用PictureBox 直接加载图像没问题; 用Mat m = new Mat(file); 也没问题;
  2. OpenCvSharp4 安装没问题; 确认安装版本:4.5.2

img


4. 运行环境包权限没有问题;【export LD_LIBRARY_PATH=/home/YDT/Test/runtimes/centos7-x64/native/:$LD_LIBRARY_PATH】OpenCvSharp4的环境文件加入系统变量;
5. so文件依赖已经检查; ldd libOpenCvSharpExtern.so;都存在没有not found

img

贴代码:(代码真没什么东西 就两句话。。)
VideoCapture cam = new VideoCapture(_camIndex);
Mat m = Cv2.ImRead(file);

环境;引用;权限; 请教 还有哪些地方是我没注意到的 谢谢!!

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-20 15:45
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    根据您的描述和排查步骤,可以尝试以下解决方案:
    1. 检查摄像头的权限是否正确配置。在Linux下,有时候需要额外的权限来访问摄像头设备。您可以尝试在OpenEuler中使用ls -l /dev/video0命令来检查摄像头设备的权限设置,并确保当前用户有足够的权限来访问这个设备。
    2. 检查OpenCV库是否正确链接。在OpenEuler环境中,确认您的OpenCV库是否正确安装并链接。可以尝试重新安装OpenCV库或者检查OpenCV相关的环境变量设置。
    3. 尝试使用不同的摄像头索引。有时候摄像头的索引可能不正确,可以尝试使用不同的索引来初始化VideoCapture对象,比如使用VideoCapture cam = new VideoCapture(1);来替代VideoCapture cam = new VideoCapture(0);。 如果以上方法仍然无法解决问题,可以尝试添加更多的调试信息或者尝试在OpenEuler环境下运行其他OpenCV相关的示例代码来检查是否存在环境配置或者代码问题。希望这些信息对您有帮助!如果您有更多问题或者需要进一步帮助,请随时询问。
    评论

报告相同问题?

问题事件

  • 创建了问题 3月20日