国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

??低曄鄼C(jī)-LINUX SDK 開(kāi)發(fā)

這篇具有很好參考價(jià)值的文章主要介紹了??低曄鄼C(jī)-LINUX SDK 開(kāi)發(fā)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

硬件與環(huán)境

海康威視相機(jī)-LINUX SDK 開(kāi)發(fā),計(jì)算機(jī)視覺(jué)

相機(jī): MV-CS020-10GC
系統(tǒng):UBUNTU 22.04
語(yǔ)言:C++
工具:cmake
??倒倬W(wǎng)下載SDK
海康威視相機(jī)-LINUX SDK 開(kāi)發(fā),計(jì)算機(jī)視覺(jué)

??低曄鄼C(jī)-LINUX SDK 開(kāi)發(fā),計(jì)算機(jī)視覺(jué)
運(yùn)行下面的命令進(jìn)行安裝

sudo dpkg -i  MVSXXX.deb

安裝完成后從在/opt/MVS 路徑下就有了相關(guān)的庫(kù),實(shí)際上我們開(kāi)發(fā)的時(shí)候只需要lib和include。有興趣的同學(xué)也可以嘗試以下Samples的例子。make一下就能生成可執(zhí)行文件。如果make報(bào)錯(cuò),可能環(huán)境變量沒(méi)有設(shè)置好,到bin文件夾下把那幾個(gè)設(shè)置環(huán)境變量的shell腳本運(yùn)行一下再試一試。

make

??低曄鄼C(jī)-LINUX SDK 開(kāi)發(fā),計(jì)算機(jī)視覺(jué)
這里是我運(yùn)行了/opt/MVS/Samples/64/Display下的例子。

??低曄鄼C(jī)-LINUX SDK 開(kāi)發(fā),計(jì)算機(jī)視覺(jué)

開(kāi)發(fā)

實(shí)際上我們開(kāi)發(fā)的時(shí)候只需要目錄/opt/MVS/lib和/opt/MVS/include下的文件。他們是??堤峁┑逆溄訋?kù)。所以我們?cè)趯?xiě)程序的時(shí)候鏈接到??档膸?kù),我們就能調(diào)用??倒俜降慕涌诹?。

我將??档膸?kù)放在我工程的3rdPartys下,這樣就移植到其他電腦上會(huì)比較方便。

add_library(
        cameraAPI
        SHARED
)
# Define preprocessor macro for exporting symbols on Windows

if(WIN32)
        target_compile_definitions(cameraAPI PRIVATE cameraAPI_EXPORTS)
endif()


message( target name: cameraAPI )

target_include_directories(
        cameraAPI  PRIVATE
        ${OpenCV_INCLUDE_DIRS}
        ./include
        ./3rdPartys/mvsinclude
)

target_sources(
        cameraAPI PRIVATE
        ./src/edge_camera.cpp
)

target_link_directories(
        cameraAPI  PUBLIC
        ${OpenCV_LIBS}
        ./3rdPartys/mvslib/64
)

target_link_libraries(
        cameraAPI  PRIVATE
        ${OpenCV_LIBS}
        MvCameraControl
        pthread
)

主要的程序

//
// Created by zc on 8/24/23.
//
#include "edge_camera.h"

 EDGE_CAMERA::EDGE_CAMERA() {
    std::cout<<"EDGE_CAMERA BEGIN!"<<std::endl;
}

EDGE_CAMERA::~EDGE_CAMERA(){
    std::cout<<"EDGE_CAMERA FINISH!"<<std::endl;
}


// print the discovered devices' information
void EDGE_CAMERA::PrintDeviceInfo(MV_CC_DEVICE_INFO* pstMVDevInfo)
{
    if (nullptr == pstMVDevInfo)
    {
        printf("    NULL info.\n\n");
        return;
    }

    if (MV_GIGE_DEVICE == pstMVDevInfo->nTLayerType)
    {
        unsigned int nIp1 = ((pstMVDevInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0xff000000) >> 24);
        unsigned int nIp2 = ((pstMVDevInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x00ff0000) >> 16);
        unsigned int nIp3 = ((pstMVDevInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x0000ff00) >> 8);
        unsigned int nIp4 = (pstMVDevInfo->SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff);

        // en:Print current ip and user defined name
        printf("    IP: %d.%d.%d.%d\n" , nIp1, nIp2, nIp3, nIp4);
        printf("    UserDefinedName: %s\n" , pstMVDevInfo->SpecialInfo.stGigEInfo.chUserDefinedName);
        printf("    Device Model Name: %s\n\n", pstMVDevInfo->SpecialInfo.stGigEInfo.chModelName);
    }
    else if (MV_USB_DEVICE == pstMVDevInfo->nTLayerType)
    {
        printf("    UserDefinedName: %s\n", pstMVDevInfo->SpecialInfo.stUsb3VInfo.chUserDefinedName);
        printf("    Device Model Name: %s\n\n", pstMVDevInfo->SpecialInfo.stUsb3VInfo.chModelName);
    }
    else
    {
        printf("    Not support.\n\n");
    }
}


//  en:Convert pixel arrangement from RGB to BGR
void EDGE_CAMERA::RGB2BGR( unsigned char* pRgbData, unsigned int nWidth, unsigned int nHeight )
{
    if ( nullptr == pRgbData )
    {
        return;
    }

    // RGB TO BGR
    for (unsigned int j = 0; j < nHeight; j++)
    {
        for (unsigned int i = 0; i < nWidth; i++)
        {
            unsigned char red = pRgbData[j * (nWidth * 3) + i * 3];
            pRgbData[j * (nWidth * 3) + i * 3]     = pRgbData[j * (nWidth * 3) + i * 3 + 2];
            pRgbData[j * (nWidth * 3) + i * 3 + 2] = red;
        }
    }
}



// en:Convert data stream to Mat format then save image
bool EDGE_CAMERA::Convert2Mat(MV_FRAME_OUT_INFO_EX *pstImageInfo, unsigned char *pData, cv::Mat &img)
{
    if (nullptr == pstImageInfo || nullptr == pData)
    {
        printf("NULL info or data.\n");
        return false;
    }

    cv::Mat srcImage;

    if ( PixelType_Gvsp_Mono8 == pstImageInfo->enPixelType )                // Mono8
    {
        srcImage = cv::Mat(pstImageInfo->nHeight, pstImageInfo->nWidth, CV_8UC1, pData);
    }
    else if ( PixelType_Gvsp_RGB8_Packed == pstImageInfo->enPixelType )     // RGB8
    {
        RGB2BGR(pData, pstImageInfo->nWidth, pstImageInfo->nHeight);
        srcImage = cv::Mat(pstImageInfo->nHeight, pstImageInfo->nWidth, CV_8UC3, pData);
    }
    else if(PixelType_Gvsp_BayerRG8 == pstImageInfo->enPixelType)           // BayerRG8
    {
        printf("pPixelType_Gvsp_BayerRG8 type is converted to Mat\n");
        //RGB2BGR(pData, pstImageInfo->nWidth, pstImageInfo->nHeight);
        srcImage = cv::Mat(pstImageInfo->nHeight, pstImageInfo->nWidth, CV_8UC1, pData);
       // srcImage.create(srcImage.rows,srcImage.cols,CV_8UC3);
        cvtColor(srcImage, srcImage, cv::COLOR_BayerRG2RGB);
    }
    else
    {
        printf("Unsupported pixel format\n");
        return false;
    }

    if ( nullptr == srcImage.data )
    {
        printf("Creat Mat failed.\n");
        return false;
    }

    try
    {
        // en:Save converted image in a local file
        img = srcImage;
        cv::imwrite("Image_Mat.bmp", srcImage);
    }
    catch (cv::Exception& ex)
    {
        fprintf(stderr, "Exception in saving mat image: %s\n", ex.what());
    }

    srcImage.release();

    return true;
}

// en:Convert data stream in Ipl format then save image
bool EDGE_CAMERA::Convert2Ipl(MV_FRAME_OUT_INFO_EX* pstImageInfo, unsigned char * pData)
{
    if (nullptr == pstImageInfo || nullptr == pData)
    {
        printf("NULL info or data.\n");
        return false;
    }

    IplImage* srcImage = nullptr;

    if ( PixelType_Gvsp_Mono8 == pstImageInfo->enPixelType )                // Mono8????
    {
        srcImage = cvCreateImage(cvSize(pstImageInfo->nWidth, pstImageInfo->nHeight), IPL_DEPTH_8U, 1);
    }
    else if ( PixelType_Gvsp_RGB8_Packed == pstImageInfo->enPixelType )     // RGB8????
    {
        RGB2BGR(pData, pstImageInfo->nWidth, pstImageInfo->nHeight);
        srcImage = cvCreateImage(cvSize(pstImageInfo->nWidth, pstImageInfo->nHeight), IPL_DEPTH_8U, 3);
    }
    else
    {
        printf("Unsupported pixel format\n");
        return false;
    }

    if ( nullptr == srcImage )
    {
        printf("Creat IplImage failed.\n");
        return false;
    }

    srcImage->imageData = (char *)pData;

    try
    {
        // en:Save converted image in a local file
        cv::Mat cConvertImage = cv::cvarrToMat(srcImage);
        cv::imwrite("Image_Ipl.bmp", cConvertImage);

        cConvertImage.release();
    }
    catch (cv::Exception& ex)
    {
        fprintf(stderr, "Exception in saving IplImage: %s\n", ex.what());
    }

    cvReleaseImage(&srcImage);

    return true;
}


void EDGE_CAMERA::findCameras(){
    int nRet = MV_OK;
    //void* handle = nullptr;
    //unsigned char * pData = nullptr;
    //MV_CC_DEVICE_INFO_LIST _stDeviceList;
    memset(&_stDeviceList, 0, sizeof(MV_CC_DEVICE_INFO_LIST));

    // en:Enum device
    do {
        nRet = MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, &_stDeviceList);
        if (MV_OK != nRet) {
            printf("Enum Devices fail! nRet [0x%x]\n", nRet);
            break;
        }

        // en:Show devices
        if (_stDeviceList.nDeviceNum > 0) {
            for (unsigned int i = 0; i < _stDeviceList.nDeviceNum; i++) {
                printf("[device %d]:\n", i);
                MV_CC_DEVICE_INFO *pDeviceInfo = _stDeviceList.pDeviceInfo[i];
                if (nullptr == pDeviceInfo) {
                    break;
                }
                PrintDeviceInfo(pDeviceInfo);
            }
        } else {
            printf("Find No Devices!\n");
            break;
        }
    }while(false);
}



void EDGE_CAMERA::connectCameras(){
    for(int device = 0; device < _stDeviceList.nDeviceNum; device++){
        if (!MV_CC_IsDeviceAccessible(_stDeviceList.pDeviceInfo[device], MV_ACCESS_Exclusive))
        {
            PrintDeviceInfo(_stDeviceList.pDeviceInfo[device]);
            printf("Can't connect %u! ", _stDeviceList.pDeviceInfo[device]->nMacAddrLow);
            continue;
        }else{
            void *handle;
            PrintDeviceInfo(_stDeviceList.pDeviceInfo[device]);
            printf("connect %10u!\n", _stDeviceList.pDeviceInfo[device]->nMacAddrLow);
            int nRet = MV_CC_CreateHandle(&handle, _stDeviceList.pDeviceInfo[device]);
            _handlesCameraInfos.push_back({handle,nRet}); //save the handle to handlesCameraInfos
            if (MV_OK != nRet)
            {
                printf("Create Handle fail! nRet [0x%x]\n", nRet);
            }
        }
    }
}




void EDGE_CAMERA::initCamera(void *handle, int createRetStatus, unsigned int cameraIndex) {
    int nRet;
    unsigned char * pData = nullptr;
  do{
      if (createRetStatus != MV_OK)
          break;
      handle = handle;
      // en:Open device
      nRet = MV_CC_OpenDevice(handle);
      if (MV_OK != nRet) {
          printf("Open Device fail! nRet [0x%x]\n", nRet);
          break;
      }

      // en:Detection network optimal package size(It only works for the GigE camera)
      if (MV_GIGE_DEVICE == _stDeviceList.pDeviceInfo[cameraIndex]->nTLayerType) {
          int nPacketSize = MV_CC_GetOptimalPacketSize(handle);
          if (nPacketSize > 0) {
              nRet = MV_CC_SetIntValue(handle, "GevSCPSPacketSize", nPacketSize);
              if (MV_OK != nRet) {
                  printf("Warning: Set Packet Size fail! nRet [0x%x]!", nRet);
              }
          } else {
              printf("Warning: Get Packet Size fail! nRet [0x%x]!", nPacketSize);
          }
      }

      //en:Set trigger mode as off
      nRet = MV_CC_SetEnumValue(handle, "TriggerMode", 0);
      if (MV_OK != nRet) {
          printf("Set Trigger Mode fail! nRet [0x%x]\n", nRet);
          break;
      }

      // en:Get payload size
      MVCC_INTVALUE stParam;
      memset(&stParam, 0, sizeof(MVCC_INTVALUE));
      nRet = MV_CC_GetIntValue(handle, "PayloadSize", &stParam);
      if (MV_OK != nRet) {
          printf("Get PayloadSize fail! nRet [0x%x]\n", nRet);
          break;
      }
      unsigned int nPayloadSize = stParam.nCurValue;

      // en:Init image info
      MV_FRAME_OUT_INFO_EX stImageInfo = {0};
      memset(&stImageInfo, 0, sizeof(MV_FRAME_OUT_INFO_EX));
      pData = (unsigned char *) malloc(sizeof(unsigned char) * (nPayloadSize));
      if (nullptr == pData) {
          printf("Allocate memory failed.\n");
          break;
      }
      memset(pData, 0, sizeof(pData));

      //  en:Start grab image
      nRet = MV_CC_StartGrabbing(handle);
      if (MV_OK != nRet) {
          printf("Start Grabbing fail! nRet [0x%x]\n", nRet);
          break;
      }

      _camerasDatas.push_back({handle,pData,nPayloadSize,stImageInfo});

      // en:Get one frame from camera with timeout=1000ms
  /*    while (true) {
          nRet = MV_CC_GetOneFrameTimeout(handle, pData, nPayloadSize, &stImageInfo, 1000);
          if (MV_OK == nRet) {
              printf("Get One Frame: Width[%d], Height[%d], FrameNum[%d]\n",
                     stImageInfo.nWidth, stImageInfo.nHeight, stImageInfo.nFrameNum);
          } else {
              printf("Get Frame fail! nRet [0x%x]\n", nRet);
              break;
          }

          //  en:Convert image data
          bool bConvertRet = false;
          cv::Mat img;
          bConvertRet = Convert2Mat(&stImageInfo, pData, img);
          cv::namedWindow("img", cv::WINDOW_NORMAL);
          cv::resizeWindow("img", cv::Size(900, 600));
          imshow("img", img);
          cv::waitKey(20);

      }*/
  }while(false);



      /* // en:Stop grab image
       nRet = MV_CC_StopGrabbing(handle);
       if (MV_OK != nRet)
       {
           printf("Stop Grabbing fail! nRet [0x%x]\n", nRet);
           break;
       }

       // en:Close device
       nRet = MV_CC_CloseDevice(handle);
       if (MV_OK != nRet)
       {
           printf("ClosDevice fail! nRet [0x%x]\n", nRet);
           break;
       }

       //  en:Input the format to convert
       printf("\n[0] OpenCV_Mat\n");
       printf("[1] OpenCV_IplImage\n");
       int nFormat = 0;*/


}

void EDGE_CAMERA::initAllCameras(){
    unsigned int nCameraIndex = _handlesCameraInfos.size();
    unsigned int cameraIndex = 0;
    for(auto handlesCameraInfo:_handlesCameraInfos){
        initCamera(handlesCameraInfo.handle, handlesCameraInfo.createRetStatus, cameraIndex);
        cameraIndex++;
    }
}

void EDGE_CAMERA::disPlay() {

    //initCamera(_handlesCameraInfos[0].handle, _handlesCameraInfos[0].createRetStatus, 0);
    std::string winName = "img";
    cv::namedWindow(winName, cv::WINDOW_NORMAL);
    cv::resizeWindow(winName, cv::Size(900, 600));

    while (cv::waitKey(50) != 'q') {
        unsigned int cameraIndex = 0;
        int nRet = MV_CC_GetOneFrameTimeout(_camerasDatas[0].handle, _camerasDatas[0].pData, _camerasDatas[0].nPayloadSize, &_camerasDatas[0].stImageInfo, 1000);
        if (MV_OK == nRet) {
            printf("Get One Frame: Width[%d], Height[%d], FrameNum[%d]\n",
                   _camerasDatas[0].stImageInfo.nWidth, _camerasDatas[0].stImageInfo.nHeight, _camerasDatas[0].stImageInfo.nFrameNum);
        } else {
            printf("Get Frame fail! nRet [0x%x]\n", nRet);
            break;
        }

        //  en:Convert image data
        bool bConvertRet = false;
        cv::Mat img;
        bConvertRet = Convert2Mat(&_camerasDatas[0].stImageInfo, _camerasDatas[0].pData, img);
        imshow(winName, img);
        cv::waitKey(20);
    }



}


bool EDGE_CAMERA::getAndProcessImg() {
    int nRet = MV_OK;
    void* handle = nullptr;
    unsigned char * pData = nullptr;

    do

    {
        MV_CC_DEVICE_INFO_LIST stDeviceList;
        memset(&stDeviceList, 0, sizeof(MV_CC_DEVICE_INFO_LIST));

        // en:Enum device
        nRet = MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, &stDeviceList);
        if (MV_OK != nRet)
        {
            printf("Enum Devices fail! nRet [0x%x]\n", nRet);
            break;
        }

        // en:Show devices
        if (stDeviceList.nDeviceNum > 0)
        {
            for (unsigned int i = 0; i < stDeviceList.nDeviceNum; i++)
            {
                printf("[device %d]:\n", i);
                MV_CC_DEVICE_INFO* pDeviceInfo = stDeviceList.pDeviceInfo[i];
                if (nullptr == pDeviceInfo)
                {
                    break;
                }
                PrintDeviceInfo(pDeviceInfo);
            }
        }
        else
        {
            printf("Find No Devices!\n");
            break;
        }

        // en:Select device
        unsigned int nIndex = 0;
        while (true)
        {
            printf("Please Input camera index(0-%d): ", stDeviceList.nDeviceNum - 1);

            if (1 == scanf("%d", &nIndex))
            {
                while (getchar() != '\n')
                {
                    ;
                }


                if (nIndex >= 0 && nIndex < stDeviceList.nDeviceNum)
                {
                    if (!MV_CC_IsDeviceAccessible(stDeviceList.pDeviceInfo[nIndex], MV_ACCESS_Exclusive))
                    {
                        printf("Can't connect! ");
                        continue;
                    }

                    break;
                }
            }
            else
            {
                while (getchar() != '\n')
                {
                    ;
                }
            }
        }

        // en:Create handle
        nRet = MV_CC_CreateHandle(&handle, stDeviceList.pDeviceInfo[nIndex]);

        if (MV_OK != nRet)
        {
            printf("Create Handle fail! nRet [0x%x]\n", nRet);
            break;
        }

        // en:Open device
        nRet = MV_CC_OpenDevice(handle);
        if (MV_OK != nRet)
        {
            printf("Open Device fail! nRet [0x%x]\n", nRet);
            break;
        }

        // en:Detection network optimal package size(It only works for the GigE camera)
        if (MV_GIGE_DEVICE == stDeviceList.pDeviceInfo[nIndex]->nTLayerType)
        {
            int nPacketSize = MV_CC_GetOptimalPacketSize(handle);
            if (nPacketSize > 0)
            {
                nRet = MV_CC_SetIntValue(handle, "GevSCPSPacketSize", nPacketSize);
                if (MV_OK != nRet)
                {
                    printf("Warning: Set Packet Size fail! nRet [0x%x]!", nRet);
                }
            }
            else
            {
                printf("Warning: Get Packet Size fail! nRet [0x%x]!", nPacketSize);
            }
        }

        //en:Set trigger mode as off
        nRet = MV_CC_SetEnumValue(handle, "TriggerMode", 0);
        if (MV_OK != nRet)
        {
            printf("Set Trigger Mode fail! nRet [0x%x]\n", nRet);
            break;
        }

        // en:Get payload size
        MVCC_INTVALUE stParam;
        memset(&stParam, 0, sizeof(MVCC_INTVALUE));
        nRet = MV_CC_GetIntValue(handle, "PayloadSize", &stParam);
        if (MV_OK != nRet)
        {
            printf("Get PayloadSize fail! nRet [0x%x]\n", nRet);
            break;
        }
        unsigned int nPayloadSize = stParam.nCurValue;

        // en:Init image info
        MV_FRAME_OUT_INFO_EX stImageInfo = { 0 };
        memset(&stImageInfo, 0, sizeof(MV_FRAME_OUT_INFO_EX));
        pData = (unsigned char *)malloc(sizeof(unsigned char)* (nPayloadSize));
        if (nullptr == pData)
        {
            printf("Allocate memory failed.\n");
            break;
        }
        memset(pData, 0, sizeof(pData));

        //  en:Start grab image
        nRet = MV_CC_StartGrabbing(handle);
        if (MV_OK != nRet)
        {
            printf("Start Grabbing fail! nRet [0x%x]\n", nRet);
            break;
        }

        // en:Get one frame from camera with timeout=1000ms
        nRet = MV_CC_GetOneFrameTimeout(handle, pData, nPayloadSize, &stImageInfo, 1000);
        if (MV_OK == nRet)
        {
            printf("Get One Frame: Width[%d], Height[%d], FrameNum[%d]\n",
                   stImageInfo.nWidth, stImageInfo.nHeight, stImageInfo.nFrameNum);
        }
        else
        {
            printf("Get Frame fail! nRet [0x%x]\n", nRet);
            break;
        }

        // en:Stop grab image
        nRet = MV_CC_StopGrabbing(handle);
        if (MV_OK != nRet)
        {
            printf("Stop Grabbing fail! nRet [0x%x]\n", nRet);
            break;
        }

        // en:Close device
        nRet = MV_CC_CloseDevice(handle);
        if (MV_OK != nRet)
        {
            printf("ClosDevice fail! nRet [0x%x]\n", nRet);
            break;
        }

        //  en:Input the format to convert
        printf("\n[0] OpenCV_Mat\n");
        printf("[1] OpenCV_IplImage\n");
        int nFormat = 0;
        while (1)
        {
            printf("Please Input Format to convert: ");

            if (1 == scanf("%d", &nFormat))
            {

                if (0 == nFormat || 1 == nFormat)
                {
                    break;
                }
            }
            while (getchar() != '\n')
            {
                ;
            }
        }

        //  en:Convert image data
        bool bConvertRet = false;
        cv::Mat img;
        if (OpenCV_Mat == nFormat)
        {
            bConvertRet = Convert2Mat(&stImageInfo, pData, img);
        }
        else if (OpenCV_IplImage == nFormat)
        {
            bConvertRet = Convert2Ipl(&stImageInfo, pData);
        }

        //  en:Print result
        if (bConvertRet)
        {
            printf("OpenCV format convert finished.\n");
        }
        else
        {
            printf("OpenCV format convert failed.\n");
        }

    } while (0);

    // en:Destroy handle
    if (handle)
    {
        MV_CC_DestroyHandle(handle);
        handle = nullptr;
    }

    // en:Free memery
    if (pData)
    {
        free(pData);
        pData = nullptr;
    }
    return true;
}


void EDGE_CAMERA::saveImg(std::string path,unsigned int cameraIndex){

}

Main函數(shù)

int main(int argc, char **argv){
  EDGE_CAMERA camera;
   camera.findCameras();
   camera.connectCameras();
   camera.initAllCameras();
   camera.disPlay();
   }

執(zhí)行效果

??低曄鄼C(jī)-LINUX SDK 開(kāi)發(fā),計(jì)算機(jī)視覺(jué)

注意

我是編譯了一個(gè)動(dòng)態(tài)庫(kù)cameraAPI,main函數(shù)是鏈接的camkeraAPI。上面是把最重要的代碼給貼出來(lái)了。不是完整的工程哈。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-681218.html

到了這里,關(guān)于??低曄鄼C(jī)-LINUX SDK 開(kāi)發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于??低暤腟DK實(shí)現(xiàn)二次開(kāi)發(fā)

    基于??低暤腟DK實(shí)現(xiàn)二次開(kāi)發(fā)

    因?yàn)榫W(wǎng)上關(guān)于??低昐DK這塊的開(kāi)發(fā)資源比較少,自己也是一步一步摸索過(guò)來(lái),知道那種痛苦, 所以把自己的一些過(guò)來(lái)人的經(jīng)驗(yàn)寫(xiě)出來(lái)供大家學(xué)習(xí)參考 進(jìn)入海康威視官網(wǎng) 下載你所需要的SDK開(kāi)發(fā)包(這里我就用windows來(lái)作為案列) 下載完SDK解壓 里面有開(kāi)發(fā)文檔和SDK的動(dòng)態(tài)庫(kù)文

    2024年04月10日
    瀏覽(17)
  • 【Python】基于Python和Qt的海康威視相機(jī)開(kāi)發(fā)

    【Python】基于Python和Qt的??低曄鄼C(jī)開(kāi)發(fā)

    【項(xiàng)目實(shí)踐】海康威視工業(yè)相機(jī)SDK開(kāi)發(fā)小白版入門(mén)教程(VS2015+OpenCV4.5.1) ??此前寫(xiě)了一篇基于C++開(kāi)發(fā)??低曄鄼C(jī)的博客,貌似看的人還挺多,收藏量比較高,但其實(shí)當(dāng)時(shí)就知道其實(shí)??低曄鄼C(jī)還可以使用python開(kāi)發(fā),但當(dāng)時(shí)python水平不高,也沒(méi)有深入了解,趁此機(jī)會(huì),好

    2024年02月16日
    瀏覽(24)
  • 海康相機(jī)開(kāi)發(fā):SDK安裝和ARM開(kāi)發(fā)

    在??迪鄼C(jī)開(kāi)發(fā)過(guò)程中,首先需要進(jìn)行SDK的安裝和ARM平臺(tái)的開(kāi)發(fā)。本文將詳細(xì)介紹如何安裝海康相機(jī)SDK并進(jìn)行ARM開(kāi)發(fā),包括安裝步驟和相關(guān)源代碼。 一、SDK安裝步驟: 下載SDK:訪問(wèn)海康官方網(wǎng)站,找到相機(jī)SDK的下載頁(yè)面,根據(jù)所需的平臺(tái)選擇合適的SDK版本進(jìn)行下載。 安裝

    2024年02月03日
    瀏覽(132)
  • C# 上位機(jī)之??迪鄼C(jī)開(kāi)發(fā)(SDK)

    C# 上位機(jī)之??迪鄼C(jī)開(kāi)發(fā)(SDK)

    發(fā)現(xiàn)工作中好多計(jì)算機(jī)視覺(jué)上位機(jī)項(xiàng)目都用??迪鄼C(jī),為了能夠更好的學(xué)習(xí)和工作,我自己依據(jù)同事的源碼和網(wǎng)上的一些總結(jié)編寫(xiě)本博客。通過(guò)本次學(xué)習(xí),讓我明白一點(diǎn),無(wú)論學(xué)習(xí)什么技術(shù)都要學(xué)會(huì)自己看技術(shù)文檔,而不是第一時(shí)間上網(wǎng)找源碼。以工業(yè)相機(jī)SDK使用說(shuō)明.chm為例

    2024年02月03日
    瀏覽(33)
  • 【HIKROBOT】??禉C(jī)器人:工業(yè)相機(jī)SDK二次開(kāi)發(fā)

    【HIKROBOT】海康機(jī)器人:工業(yè)相機(jī)SDK二次開(kāi)發(fā)

    ??禉C(jī)器人官網(wǎng)鏈接:https://www.hikrobotics.com/cn 根據(jù)購(gòu)買(mǎi)設(shè)備的型號(hào)下載用戶說(shuō)明書(shū) 筆者實(shí)驗(yàn)室購(gòu)買(mǎi)了兩款,一款GigE網(wǎng)口接口的,一款USB接口 GigE網(wǎng)口接口 USB接口:MV-CA050-20UC 服務(wù)支持”“下載中心”“機(jī)器視覺(jué)”中下載MVS客戶端安裝包及SDK開(kāi)發(fā)包。 1.1.1 Ubuntu18.04系統(tǒng)安裝 下

    2024年02月05日
    瀏覽(64)
  • (一)Qt+OpenCV調(diào)用??倒I(yè)相機(jī)SDK示例開(kāi)發(fā)

    (一)Qt+OpenCV調(diào)用??倒I(yè)相機(jī)SDK示例開(kāi)發(fā)

    提示:這里是該系列文章的所有文章的目錄 第一章: (一)Qt+OpenCV調(diào)用海康工業(yè)相機(jī)SDK示例開(kāi)發(fā) 第二章: (二)Qt多線程實(shí)現(xiàn)??倒I(yè)相機(jī)圖像實(shí)時(shí)采集 近期在Qt環(huán)境下進(jìn)行海康工業(yè)相機(jī)的使用開(kāi)發(fā),發(fā)現(xiàn)??堤峁┑氖纠龥](méi)有Qt的demo,而其中有基于MFC框架的示例,所以在這

    2024年02月03日
    瀏覽(150)
  • 【記錄】??迪鄼C(jī)(SDK)二次開(kāi)發(fā)時(shí)的錯(cuò)誤碼

    在進(jìn)行海康sdk二次開(kāi)發(fā)的時(shí)候,經(jīng)常碰到各種錯(cuò)誤,遂結(jié)合官方文檔和廣大網(wǎng)友的一些經(jīng)驗(yàn),把這些錯(cuò)誤碼記錄一下,方便查找。筆者使用的SDK版本是HCNetSDKV6.1.9.4。 錯(cuò)誤類(lèi)型 錯(cuò)誤碼 錯(cuò)誤信息 NET_DVR_NOERROR 0 沒(méi)有錯(cuò)誤。 NET_DVR_PASSWORD_ERROR 1 用戶名密碼錯(cuò)誤。注冊(cè)時(shí)輸入的用戶名

    2024年04月08日
    瀏覽(23)
  • 基于海康SDK實(shí)現(xiàn)Python調(diào)用??低暰W(wǎng)絡(luò)攝像頭

    基于??礢DK實(shí)現(xiàn)Python調(diào)用??低暰W(wǎng)絡(luò)攝像頭

    本文參考博客,寫(xiě)得很好: Python調(diào)用??低暰W(wǎng)絡(luò)相機(jī)之——python調(diào)用??低旵++的SDK Python調(diào)用??低暰W(wǎng)絡(luò)相機(jī)C++的SDK 寫(xiě)本文的目的,也是快速?gòu)?fù)盤(pán),所以沒(méi)有很詳細(xì) 保存視頻流到本地可參考下一篇:基于??礢DK實(shí)現(xiàn)Python保存海康威視網(wǎng)絡(luò)攝像頭拍攝的視頻 Windows11 Vis

    2024年02月02日
    瀏覽(54)
  • 海康威視SDK視頻錄制及強(qiáng)制I幀操作

    ??低昐DK視頻錄制及強(qiáng)制I幀操作

    使用下面方法可以實(shí)現(xiàn)視頻錄像功能。 該方法有個(gè)問(wèn)題,視頻可以錄制,但是不能被前端頁(yè)面直接加載播放,因?yàn)橐曨l編碼格式問(wèn)題,雖然可以用FFMPEG工具進(jìn)行格式轉(zhuǎn)化,但是引入第三方的庫(kù),無(wú)疑會(huì)使代碼的維護(hù)性降低。 FFMPEG工具 地址 提取碼 zc14 使用FFmpeg進(jìn)行轉(zhuǎn)換的方法

    2023年04月24日
    瀏覽(40)
  • Python??低昐DK實(shí)現(xiàn)實(shí)時(shí)預(yù)覽:快速構(gòu)建高效視頻監(jiān)控系統(tǒng)

    Python??低昐DK實(shí)現(xiàn)實(shí)時(shí)預(yù)覽:快速構(gòu)建高效視頻監(jiān)控系統(tǒng) 在當(dāng)今社會(huì),安全問(wèn)題越來(lái)越受到人們的關(guān)注,越來(lái)越多的企業(yè)和機(jī)構(gòu)開(kāi)始建設(shè)視頻監(jiān)控系統(tǒng)。而Python作為一種高效、易用的編程語(yǔ)言,已經(jīng)成為了許多開(kāi)發(fā)人員的首選。本文將介紹如何使用Python海康威視SDK來(lái)實(shí)現(xiàn)實(shí)

    2024年02月14日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包