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

.NET MAUI Camera.MAUI库一维条码扫描失效问题求助

解决Camera.MAUI一维条码无法识别的问题

针对你遇到的QR码可正常识别但一维条码检测失败的问题,可尝试以下调整:

1. 显式指定一维码格式

ZXing.BarcodeFormat.All_1D可能存在覆盖不全的情况,直接列出目标一维码格式(比如常见的EAN-13、UPC-A、Code128等)能提升识别率,同时开启TryHarder参数增强识别深度:

private void InitializeBarCodeOptions()
{
    CameraView.BarCodeOptions = new BarcodeDecodeOptions
    {
        AutoRotate = true,
        TryHarder = true,
        CharacterSet = "UTF-8",
        PossibleFormats =
        {
            ZXing.BarcodeFormat.QR_CODE,
            ZXing.BarcodeFormat.EAN_13,
            ZXing.BarcodeFormat.EAN_8,
            ZXing.BarcodeFormat.UPC_A,
            ZXing.BarcodeFormat.UPC_E,
            ZXing.BarcodeFormat.CODE_128,
            ZXing.BarcodeFormat.CODE_39
        }
    };
}

2. 优化相机配置

  • 优先使用后置摄像头:前置摄像头分辨率低、对焦性能差,会严重影响一维码识别
  • 开启连续自动对焦,保证条码画面清晰

修改CameraView_CamerasLoaded方法:

private void CameraView_CamerasLoaded(object sender, EventArgs e)
{
    if (CameraView.Cameras.Count <= 0) return;

    // 优先选择后置摄像头
    var backCamera = CameraView.Cameras.FirstOrDefault(c => c.Position == Camera.MAUI.CameraPosition.Back);
    CameraView.Camera = backCamera ?? CameraView.Cameras.First();
    
    MainThread.BeginInvokeOnMainThread(async () =>
    {
        await CameraView.StopCameraAsync();
        await CameraView.StartCameraAsync();
    });
}

在XAML中给CameraView添加自动对焦属性:

<cv:CameraView
    x:Name="CameraView"
    HeightRequest="450"
    WidthRequest="350"
    CamerasLoaded="CameraView_CamerasLoaded"
    BarCodeDetectionEnabled="True"
    BarcodeDetected="CameraView_BarcodeDetected"
    FocusMode="ContinuousAutoFocus"/>

3. 调整布局结构

移除包裹CameraView的ScrollView,滚动容器会干扰相机画面的渲染清晰度,直接使用VerticalStackLayout作为Popup的根布局:

<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:cv="clr-namespace:Camera.MAUI;assembly=Camera.MAUI"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="InvScanPro.Views.ScannerPage">
    <VerticalStackLayout
        Spacing="25"
        Padding="30"
        VerticalOptions="Center">
        
        <cv:CameraView
            x:Name="CameraView"
            HeightRequest="450"
            WidthRequest="350"
            CamerasLoaded="CameraView_CamerasLoaded"
            BarCodeDetectionEnabled="True"
            BarcodeDetected="CameraView_BarcodeDetected"
            FocusMode="ContinuousAutoFocus"/>

    </VerticalStackLayout>
</toolkit:Popup>

额外注意事项

  • 测试时确保条码光线充足,避免反光、阴影或模糊
  • 确认Camera.MAUI库为最新版本,旧版本可能存在一维码识别的已知bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:40:22