我有以下代码可以获取我电脑的实时网络摄像头。
这很好用,但我想做的是将
Mat
转换为 NdArray
。我尝试了多种方法,但似乎找不到解决方案。
代码如下:
public partial class Form1 : Form
{
VideoCapture capture;
Mat frame;
Bitmap image;
private Thread camera;
int isCameraRunning = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void btnStreamOnOff_Click(object sender, System.EventArgs e)
{
if (btnStreamOnOff.Text.Equals("Start Streaming"))
{
CaptureCamera();
btnStreamOnOff.Text = "Stop Streaming";
isCameraRunning = 1;
}
else
{
capture.Release();
btnStreamOnOff.Text = "Start Streaming";
isCameraRunning = 0;
}
}
private void CaptureCamera()
{
camera = new Thread(new ThreadStart(CaptureCameraCallback));
camera.Start();
}
private void CaptureCameraCallback()
{
frame = new Mat();
capture = new VideoCapture(0);
//capture.Open(2);
while (isCameraRunning == 1)
{
capture.Read(frame);
image = BitmapConverter.ToBitmap(frame);
picStream.Image = image;
image = null;
}
}
}
这是我第一次尝试将 Mat 转换为 NdArray:
Mat frameMat = capture.RetrieveMat();
var graymat = frameMat.CvtColor(ColorConversionCodes.BGR2GRAY);
graymat.GetArray(out byte[] plainArray);
NDarray nDarray = np.array(plainArray, dtype: np.uint8);
Debug.WriteLine(nDarray);
但是我遇到以下错误:
DllNotFoundException: Could not load python311.dll.
Win32Exception: %1 is not a valid Win32 application
System.TypeInitializationException: 'The type initializer for 'Delegates' threw an exception.'
希望有人能帮我破译这个