Socket通信でサーバ(Python)からクライアント(C#)に画像を転送してOpenCvSharpで扱う

クライアント側

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Drawing;

using OpenCvSharp;
using OpenCvSharp.Extensions;

namespace http_opencv_test
{
    class Program
    {
        static void Main(string[] args)
        {
            // IPアドレスとポートを設定
            IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, 12345);

            // ソケット生成
            Socket socket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            // 接続
            socket.Connect(remoteEP);

            // 送信
            byte[] msg = Encoding.UTF8.GetBytes("a" + "<EOF>");
            socket.Send(msg);

            // 受信
            byte[] bytes = new byte[1000000000];
            int bytesRec = socket.Receive(bytes);
            Stream stream = new MemoryStream(bytes);

            // 画像(Mat)化
            var img = Bitmap.FromStream(stream);
            // img.Save(@"test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            var img_mat = BitmapConverter.ToMat((Bitmap)img);

            // テスト表示
            Cv2.ImShow("img", img_mat);
            Cv2.WaitKey(0);

            //ソケット終了
            socket.Shutdown(SocketShutdown.Both);
            socket.Close();
        }
    }
}