OpenCvSharp utiliza la cámara Hikvision para recopilar imágenes y mostrarlas en pictureBox

OpenCvSharp utiliza la cámara Hikvision para recopilar imágenes y mostrarlas en pictureBox

Descripción: la versión de OpenCvSharp es 4.0

           Las cámaras Hikvision son cámaras en blanco y negro.

Función de realización: convierta la imagen recopilada por la cámara Hikvision en Mat y muéstrela en el cuadro de imagen.

Código de muestra:

        Mat srcImage;
        private Mat CaptureImage()
        {
                int nRet;
                //MyCamera.MVCC_INTVALUE stParam = new MyCamera.MVCC_INTVALUE();
                UInt32 nPayloadSize = 0;
                nRet = m_pMyCamera.MV_CC_GetIntValue_NET("PayloadSize", ref stParam);
                if (MyCamera.MV_OK != nRet)
                {
                    return null;
                }
                nPayloadSize = stParam.nCurValue;
                if (nPayloadSize > m_nBufSizeForDriver)
                {
                    m_nBufSizeForDriver = nPayloadSize;
                    m_pBufForDriver = new byte[m_nBufSizeForDriver];
                    m_nBufSizeForSaveImage = m_nBufSizeForDriver * 3 + 2048;
                    m_pBufForSaveImage = new byte[m_nBufSizeForSaveImage];
                }

                IntPtr pData = Marshal.UnsafeAddrOfPinnedArrayElement(m_pBufForDriver, 0);
                MyCamera.MV_FRAME_OUT_INFO_EX stFrameInfo = new MyCamera.MV_FRAME_OUT_INFO_EX();
                nRet = m_pMyCamera.MV_CC_GetOneFrameTimeout_NET(pData, m_nBufSizeForDriver, ref stFrameInfo, 1000);//获取一帧图像,延时时间设置为1000
                if (MyCamera.MV_OK != nRet)
                {
                    return null;
                }
                //转成Mat图像
                srcImage = new Mat(stFrameInfo.nHeight, stFrameInfo.nWidth, MatType.CV_8UC1, pData);

                return srcImage;
        }

        //点击按钮,在pictureBox上显示图像
        private void btnShow_Click(object sender, EventArgs e)
        {
                Mat srcImage = new Mat();
                //灰度图转BRG(也可以不转)
                Cv2.CvtColor(CaptureImage(), srcImage, ColorConversionCodes.GRAY2BGR);
                //在pictureBox上显示
                pictureBox1.Image = srcImage.ToBitmap();
        }

Nota: Yo uso una cámara en blanco y negro, por lo queel MatType en CV_8UC1, si es una cámara a color, seleccione CV_8UC3.

Nota complementaria sobre MatType

MatType 的 格式 : CV_ <bit_depth> (S | U | F) C <number_of_channels>

(1)bit_depth --- 比特数 --- 代表8bite,16bites,32bites,64bites --- 比如:

如果你现在创建了一个存储--灰度图片的Mat对象,这个图像的大小为宽100,高100,那么,现在这张灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位--所以它对应的就是CV_8

(2)S|U|F

  S--代表---signed int---有符号整形

U--代表--unsigned int--无符号整形

F--代表--float---------单精度浮点型

(3)C<number_of_channels> ---- 代表 --- 一张图片的通道数,比如:

1--灰度图片--grayImg---是--单通道图像

2--RGB彩色图像---------是--3通道图像

3--带Alph通道的RGB图像--是--4通道图像 

关于详细解释可参考:OpenCvSharp中CV_8UC1,CV_8UC2等参数的解释

Supongo que te gusta

Origin blog.csdn.net/Kevin_Sun777/article/details/111415290
Recomendado
Clasificación