Raspberry Pi Camera使用.NET 7捕获绿色图像

gzszwxb4  于 2023-05-19  发布在  .NET
关注(0)|答案(1)|浏览(173)

我正在尝试使用Raspberry Pi Camera V2.1在使用.NET 7的Raspberry Pi 4B上捕获图像。我已经设置了我的代码来捕获图像,代码如下:

using Iot.Device.Media;

VideoConnectionSettings settings = new VideoConnectionSettings(busId: 0, captureSize: (640, 480), pixelFormat: PixelFormat.JPEG);

using VideoDevice device = VideoDevice.Create(settings);

device.Capture("image.jpg");

然而,当我运行这段代码时,我得到的图像是绿色的。我已经通过使用Python的PiCamera库测试确认了相机本身可以正常工作。
我希望捕获的图像看起来与使用Python的PiCamera库捕获的图像相似,后者具有准确的颜色表示。为了解决这个问题,我尝试将PixelFormat参数调整为其他值,例如YUYV,但无法使其工作。我还检查了相机和树莓派之间的连接,似乎没问题。
Here's是我拍摄的一张绿色图片的例子。正如你所看到的,图像有很强的绿色偏色。我不知道是什么原因导致了这个问题,因为我完全按照this教程操作,而且它对作者有效。我是不是漏掉了什么或者做错了什么?是否需要调整任何其他设置,或者是否应该使用其他库或方法?任何帮助将不胜感激”。
编辑:一位评论者指出,我遵循的教程是针对.NET 6的,而不是.NET 7。我尝试使用.NET 6并发布了一个自包含的应用程序来再次测试代码,但问题仍然存在。

vlurs2pr

vlurs2pr1#

这为我修复了它,我需要安装“sudo apt install libgdiplus”才能让位图和颜色类工作,然后只适用于NV12像素格式。

VideoConnectionSettings settings = 
new VideoConnectionSettings(busId: 0, captureSize: (640, 480),pixelFormat: PixelFormat.NV12);

using VideoDevice device = VideoDevice.Create(settings);

MemoryStream ms = new MemoryStream(device.Capture());
Color[] colors = VideoDevice.Nv12ToRgb(ms,settings.CaptureSize);
Bitmap bitmap = VideoDevice.RgbToBitmap(settings.CaptureSize, colors);
bitmap.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);

相关问题