2

我目前正在使用树莓派 (B) 上的单声道运行时。我使用适用于 Windows 桌面的 Visual Studio Express 2012。我基本上想要实现的是将一系列图片从网络摄像头(Logitech C270)保存到 .jpg 文件中。

我找到了一个似乎正是我需要的项目: http ://www.raspberry-sharp.org/romain-flechner/2012/10/projects/use-a-webcam-plugged-in-a-raspberry-pi -with-mono-in-c-using-raspberrycam/ 所以我通过 NuGet 将它安装到我的项目中并复制了代码示例:

Cameras cameras = Cameras.DeclareDevice()
.Named(“Camera 1″).WithDevicePath(“/dev/video0″)
.Memorize();

cameras.Get(“Camera 1″).SavePicture(new PictureSize(640, 480), “/var/www/test.jpg”, 20);

正如项目页面上的说明中所写,我将 RaspberryCam.so 复制到 /lib 目录中(我也将它复制到 /Lib )。然后我将构建的文件(my.exe、RaspberryCam.dll)下载到我的 Raspberry PI 中。

现在这是我的问题:每当我尝试使用单声道执行我的程序时,我都会得到 RaspberryCam.so 的 DllNotFoundException。

我将我的项目路径添加到 /etc/ld.so.conf 并运行 ldconfig 但这没有帮助。

我还尝试在调试模式下运行单声道(MONO_LOG_LEVEL="debug" MONO_LOG_MASK="dll" mono /var/www/my.exe),它似乎正在搜索“libRaspberryCam.so”,所以我复制了 /lib/Cam .so 到 /lib/libRaspberryCam.so,但这也没有改变任何东西。

顺便说一句,我将 .so 文件的访问权限更改为 755(读取、写入、root 用户执行和世界用户读取、执行)。

老实说,我对 DLL-Import 的东西不太了解,所以我可能只是在这里犯了一些愚蠢的错误。但是我上周已经在 raspberrycam 项目页面上写了一条评论,但我还没有得到任何答案。

谁能帮我解决这个问题?

谢谢多米尼克

编辑:实际 DLLImport 的代码来自 Raspberrycam 项目“RaspberryCamInterop.cs”:

using System;
using System.Runtime.InteropServices;

namespace RaspberryCam.Interop
{
    public class RaspberryCamInterop
    {
        [DllImport("RaspberryCam.so", EntryPoint = "TakePicture")]
        public static extern PictureBuffer TakePicture(string device, uint width, uint height, uint jpegQuantity);

        [DllImport("RaspberryCam.so", EntryPoint = "OpenCameraStream")]
        public static extern IntPtr OpenCameraStream(string device, uint width, uint height, uint fps);

        [DllImport("RaspberryCam.so", EntryPoint = "CloseCameraStream")]
        public static extern void CloseCameraStream(IntPtr src);

        [DllImport("RaspberryCam.so", EntryPoint = "ReadVideoFrame")]
        public static extern PictureBuffer ReadVideoFrame(IntPtr src, uint jpegQuantity);

        [DllImport("RaspberryCam.so", EntryPoint = "GrabVideoFrame")]
        public static extern PictureBuffer GrabVideoFrame(IntPtr src);
    }
}

编辑 2:软浮动喘息似乎有些问题。我现在已经安装了标准的硬浮动 raspbian(正如它在项目页面的指南中所写:http ://www.raspberry-sharp.org/eric-bezine/2012/10/mono-framework/installing-mono -raspberry-pi/ ) 并且它有效,它不是特别快,但它确实保存了一张图片。我觉得他们使用硬浮点 raspbian 图像有点恼人,即使 mono 与 ARM 硬浮点 abi 不兼容。在 mono 安装指南中,他们也没有提到任何硬浮动补丁,我什至在 RaspberryCam 项目的源代码中找到了一些解决方法,因此他们确实注意到了与在硬浮动 abi 上运行 mono 相关的错误。

来自“PicturesCache.cs”的片段

//Timespan bug with ARM version of MONO, so we will use int in milliseconds
private readonly int duration;

但是,我将坚持使用 soft-float wheezy,并使用一个名为 uvccapture 的工具与一些 shell 脚本协作来完成这项工作。

然而,我仍然感谢您的任何建议或解决方案。

4

3 回答 3

1

什么对我有用:我复制了 .exe 文件夹中的 lib 并将其重命名为 libRaspberryCam.so。

在我这边,质量很差。我无法从这个库配置相机。

于 2014-03-05T20:48:00.040 回答
0

你试过了吗

$sudo make
$sudo make install

?

验证对 RaspberryCam.so 的访问权限并将其修复为 chmod。

再见

于 2013-09-17T11:19:49.327 回答
0

我有同样的异常,它通过将 RaspberryCam.so 复制到 /usr/lib(而不是根 /lib)来解决

于 2015-03-24T07:27:14.673 回答