我有以下代码,用于从相机捕获流图像。
以下是设置相机的代码,我在其中初始化它,设置最大分辨率,禁用闪光灯,旋转视图,设置镜像并开始预览。
_mediaCapture = new MediaCapture();
await _mediaCapture.InitializeAsync(settings);
var maxResolution =
_mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo)
.Aggregate(
(i1, i2) =>
(i1 as VideoEncodingProperties).Width > (i2 as VideoEncodingProperties).Width ? i1 : i2);
await _mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, maxResolution);
_mediaCapture.VideoDeviceController.FlashControl.AssistantLightEnabled = false;
_mediaCapture.VideoDeviceController.TorchControl.Enabled = false;
_mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
_mediaCapture.SetPreviewMirroring(true);
_mediaCapture.VideoDeviceController.PrimaryUse = CaptureUse.Photo;
VideoCapture.Source = _mediaCapture;
await _mediaCapture.StartPreviewAsync();
计时器运行后,以下代码用于捕获stream
中的照片:
var stream = new InMemoryRandomAccessStream();
await _mediaCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), stream);
using (stream)
{
var writeableBmp = new WriteableBitmap(1, 1);
stream.Seek(0);
await writeableBmp.SetSourceAsync(stream);
writeableBmp = new WriteableBitmap(writeableBmp.PixelWidth, writeableBmp.PixelHeight);
stream.Seek(0);
await writeableBmp.SetSourceAsync(stream);
_result = ScanBitmap(writeableBmp);
}
将可写位图对象传递给条形码扫描功能Decode
:
private Result ScanBitmap(WriteableBitmap writeableBmp)
{
var barcodeReader = new BarcodeReader
{
AutoRotate = true,
TryInverted = true,
Options =
{
PureBarcode = false,
TryHarder = true,
PossibleFormats = new[]
{
BarcodeFormat.QR_CODE,
BarcodeFormat.EAN_13
}
},
};
var result = barcodeReader.Decode(writeableBmp);
return result;
}
我已经使用了几个选项,因为它们可以在上面看到,但扫描不成功。 Decode
函数始终返回null。我还尝试了ResultFound
的{{1}}事件,但仍然是相同的。
这里有什么不对吗?
答案 0 :(得分:0)
我意识到这是一个老帖子,但我有同样的问题,这可能会节省一些人一些时间。对我而言,这与焦点有关。在某些手机上,根据以下链接,驱动程序出现故障:
known issues with Nokia drivers和新的MediaCapture API, 为described here。 Microsoft正在与诺基亚(或他们的设备)合作 部门)解决这个问题。我工作的唯一解决方案 运行时应用程序是使用手动对焦。所有其他尝试都给了我一个 另一个例外,无论是取消预览还是打开预览 在预览时。
无论如何,该链接提供了一个使用滑块来控制焦点的解决方案!