opencv+海康摄像头解析二维码出现一些问题

   private void DecCallbackFUN(int nPort, IntPtr pBuf, int nSize, ref PlayCtrl.FRAME_INFO pFrameInfo, int nReserved1, int nReserved2)
        {
            // 将pBuf解码后视频输入写入文件中(解码后YUV数据量极大,尤其是高清码流,不建议在回调函数中处理)
            if (pFrameInfo.nType == 3) //#define T_YV12 3
            {
                try
                {
                 
                    byte[] byteBuf = new byte[nSize];
                    Marshal.Copy(pBuf, byteBuf, 0, nSize);
                    GCHandle handle = GCHandle.Alloc(byteBuf, GCHandleType.Pinned);
                   
                    //强制I帧 Make a I frame
                    //int lChannel = CaptureChannel; //通道号 Channel number
                    //CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, lChannel);
                 //   int width = 500;
                   // int height = 400;
                    Emgu.CV.Image<Bgr, Byte> image = new Emgu.CV.Image<Bgr, Byte>(pFrameInfo.nWidth, pFrameInfo.nHeight);
                    using (Image<Bgr, Byte> yuv420p = new Image<Bgr, byte>(pFrameInfo.nWidth, (pFrameInfo.nHeight >> 1) * 3, pFrameInfo.nWidth, handle.AddrOfPinnedObject()))
                    {


                        CvInvoke.CvtColor(yuv420p, image, Emgu.CV.CvEnum.ColorConversion.Yuv420P2Bgr);
                        mainwindow.PlayControl.RealPlayWnd.Image = image.ToBitmap();
                        Mat mat = new Mat();


                        BarcodeReader reader = new BarcodeReader();
                        reader.Options.CharacterSet = "UTF-8";
                        //byte[] bt = ms.GetBuffer();
                        LuminanceSource source = new RGBLuminanceSource(byteBuf, yuv420p.Width, yuv420p.Height);
                        BinaryBitmap bitmap = new BinaryBitmap(new ZXing.Common.HybridBinarizer(source));
                        Result result;
                        try
                        {
                            result = new MultiFormatReader().decode(bitmap);
                        }
                        catch (Exception)
                        {
                            return;
                        }
                        if (result != null)
                        {
                            mainwindow.abc.Text = result.Text;
                        }
                    };
                    if (handle.IsAllocated) handle.Free();
                   
                
                  
                }
                catch (System.Exception ex)
                {
                    // Log.WriteLog("", ex.ToString());
                }
                finally
                {
                    GC.Collect();
                }
            }

        }

怎么都解析不成功,请求指教


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值