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

Qt+OpenCV調(diào)用??迪鄼C(jī)SDK采集圖像(C++)

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

配置環(huán)境:

  Qt5.12.5

  OpenCV3.4.9

  ??礛VS3.1.0

開(kāi)發(fā)工具:QT Creator-4.11.0

1、開(kāi)發(fā)步驟:

1)創(chuàng)建QT項(xiàng)目,在pro文件中添加相機(jī)的引用文件

1.1)添加??档膸?kù):

將海康SDK庫(kù)MVS\Development\Includes和MVS\Development\Libraries\win64下復(fù)制到自己的工程目錄下

qt+opencv采集攝像頭,opencv,人工智能,qt,c++,開(kāi)發(fā)語(yǔ)言

然后把庫(kù)添加到.pro文件中

qt+opencv采集攝像頭,opencv,人工智能,qt,c++,開(kāi)發(fā)語(yǔ)言

qt+opencv采集攝像頭,opencv,人工智能,qt,c++,開(kāi)發(fā)語(yǔ)言

qt+opencv采集攝像頭,opencv,人工智能,qt,c++,開(kāi)發(fā)語(yǔ)言

點(diǎn)擊下一步之后就會(huì)在.pro文件中出現(xiàn)如下代碼

qt+opencv采集攝像頭,opencv,人工智能,qt,c++,開(kāi)發(fā)語(yǔ)言

然后在這后面加上以下代碼,添加依賴項(xiàng)

1 INCLUDEPATH += $$PWD/includes/
2 INCLUDEPATH += $$PWD/includes/GenICam/
3 
4 DEPENDPATH += $$PWD/includes/
5 DEPENDPATH += $$PWD/includes/GenICam/

1.2)配置OpenCV

跟上面配置HKSDK步驟相同庫(kù)文件目錄為OpenCV的安裝目錄D:/OpenCV/opencv/build/x64/vc14/lib/opencv_world349d.lib

qt+opencv采集攝像頭,opencv,人工智能,qt,c++,開(kāi)發(fā)語(yǔ)言

配置完成會(huì)在。pro文件中出現(xiàn)如下代碼

qt+opencv采集攝像頭,opencv,人工智能,qt,c++,開(kāi)發(fā)語(yǔ)言

需要在后面添加如下代碼

 INCLUDEPATH += D:\OpenCV\opencv\build\include \
                 D:\OpenCV\opencv\build\include\opencv \
                 D:\OpenCV\opencv\build\include\opencv2
 DEPENDPATH += D:\OpenCV\opencv\build\include \
                 D:\OpenCV\opencv\build\include\opencv \
                 D:\OpenCV\opencv\build\include\opencv2

這樣??礢DK和OpenCV庫(kù)就配置完成了,可以在項(xiàng)目引入他們的頭文件了。

2、開(kāi)發(fā)步驟:

新建一個(gè)類(lèi):mycanera.h和mycaner.cpp生成這兩個(gè)文件(ps:建文件時(shí)將camera打錯(cuò)了,^_^)

mycanera.h文件參考一下代碼:

#ifndef MYCANERA_H
#define MYCANERA_H
#include "MvCameraControl.h"
#pragma execution_character_set("utf-8")   //設(shè)置當(dāng)前文件為UTF-8編碼
#pragma warning( disable : 4819 )    //解決SDK中包含中文問(wèn)題;忽略C4819錯(cuò)誤
#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <string>
#include <QDebug>

using namespace std;
using namespace cv;
class MyCanera
{
public:
    MyCanera();
   ~MyCanera();
    //聲明相關(guān)變量及函數(shù)等
    //枚舉相機(jī)設(shè)備列表
  static int EnumDevices(MV_CC_DEVICE_INFO_LIST* pstDevList);

  // ch:連接相機(jī)
  int connectCamera(string id);

  //設(shè)置相機(jī)觸發(fā)模式
  int setTriggerMode(unsigned int TriggerModeNum);

  //開(kāi)啟相機(jī)采集
  int startCamera();

  //發(fā)送軟觸發(fā)
  int softTrigger();

  //讀取buffer
  int ReadBuffer(Mat &image);

  //設(shè)置心跳時(shí)間
  int setHeartBeatTime(unsigned int time);

  //設(shè)置曝光時(shí)間
  int setExposureTime(float ExposureTimeNum);
//關(guān)閉相機(jī)
  int closeCamera();
private: void* m_hDevHandle; public: unsigned char* m_pBufForSaveImage; // 用于保存圖像的緩存 unsigned int m_nBufSizeForSaveImage; unsigned char* m_pBufForDriver; // 用于從驅(qū)動(dòng)獲取圖像的緩存 unsigned int m_nBufSizeForDriver; MV_CC_DEVICE_INFO_LIST m_stDevList; // ch:設(shè)備信息列表結(jié)構(gòu)體變量,用來(lái)存儲(chǔ)設(shè)備列表 MV_CC_DEVICE_INFO *m_Device = NULL; //設(shè)備對(duì)象 }; #endif // MYCANERA_H

mycanera.cpp文件參考一下代碼:

#include "mycanera.h"
#include <QDebug>
MyCanera::MyCanera()
{
    m_hDevHandle    = NULL;
}

MyCanera::~MyCanera()
{
    if (m_hDevHandle)
    {
        MV_CC_DestroyHandle(m_hDevHandle);
        m_hDevHandle    = NULL;
    }
}

//查詢?cè)O(shè)備列表
int MyCanera::EnumDevices(MV_CC_DEVICE_INFO_LIST* pstDevList)
{
    int temp= MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, pstDevList);
    if (MV_OK != temp)
    {
        return -1;
    }
    return 0;
}

//連接相機(jī)
//id:自定義相機(jī)名稱
int  MyCanera::connectCamera(string id)
{
    int temp= EnumDevices(&m_stDevList);
    if(temp!=0)
        //設(shè)備更新成功接收命令的返回值為0,返回值不為0則為異常
        return -1;
    if(m_stDevList.nDeviceNum==0)
        //未找到任何相機(jī)
        return 2;
    for (unsigned int i = 0; i < m_stDevList.nDeviceNum; i++)
    {
        MV_CC_DEVICE_INFO* pDeviceInfo = m_stDevList.pDeviceInfo[i];
        if (NULL == pDeviceInfo)
        {
            continue;
        }
        //qDebug() << (char*)pDeviceInfo->SpecialInfo.stGigEInfo.chUserDefinedName;//自定義相機(jī)名稱
        //qDebug() << (char*)pDeviceInfo->SpecialInfo.stGigEInfo.chSerialNumber;//相機(jī)序列號(hào)
        if(id == (char*)pDeviceInfo->SpecialInfo.stGigEInfo.chUserDefinedName||id == (char*)pDeviceInfo->SpecialInfo.stGigEInfo.chSerialNumber)
        {
            m_Device= m_stDevList.pDeviceInfo[i];
            break;
        }else
        {
            continue;
        }
    }
    if(m_Device==NULL)
    {
        //未找到指定名稱的相機(jī)
        qDebug() << "未找到指定名稱的相機(jī)";
        return 3;
    }
    temp  = MV_CC_CreateHandle(&m_hDevHandle, m_Device);//創(chuàng)建句柄
    if(temp  !=0)
        return -1;

    temp  = MV_CC_OpenDevice(m_hDevHandle);//打開(kāi)設(shè)備
    if (temp  !=0)
    {
        MV_CC_DestroyHandle(m_hDevHandle);
        m_hDevHandle = NULL;
        return -1;
    }else
    {
        setTriggerMode(1);//設(shè)置觸發(fā)模式:1-打開(kāi)觸發(fā)模式 0-關(guān)閉觸發(fā)模式
        return 0;
    }
    if (m_Device->nTLayerType == MV_GIGE_DEVICE)//設(shè)備類(lèi)型為網(wǎng)絡(luò)接口
    {
       //std::cout<<"Gige Camera"<<std::endl;
    }
}
//設(shè)置相機(jī)是否開(kāi)啟觸發(fā)模式
int MyCanera::setTriggerMode(unsigned int TriggerModeNum)
{
    int nRet = MV_CC_SetTriggerMode(m_hDevHandle,TriggerModeNum);
    if (MV_OK != nRet)
    {
        return -1;
    }

}
//啟動(dòng)相機(jī)采集
int MyCanera::startCamera()
{
    int temp=MV_CC_StartGrabbing(m_hDevHandle);
    if(temp!=0)
    {
        qDebug() << "抓圖失敗";
        return -1;
    }else
    {
        qDebug() << "抓圖成功";
        return 0;
    }
}
//發(fā)送軟觸發(fā)
int MyCanera::softTrigger()
{
    int enumValue = MV_CC_SetEnumValue(m_hDevHandle,"TriggerSource",MV_TRIGGER_SOURCE_SOFTWARE);
    if(enumValue != 0){
        qDebug() << "設(shè)置軟觸發(fā)失敗";
        return -1;
    }else {
        qDebug() << "設(shè)置軟觸發(fā)";
    }
    int comdValue= MV_CC_SetCommandValue(m_hDevHandle, "TriggerSoftware");
    if(comdValue!=0)
    {
        qDebug() << "軟觸發(fā)失敗";
        return -1;
    }else
    {
        qDebug() << "軟觸發(fā)一次";
        return 0;
    }
}
//讀取相機(jī)中的圖像
int MyCanera::ReadBuffer(Mat &image)
{
    unsigned int nBufSize = 0;//緩存大小
    MVCC_INTVALUE stIntvalue; //獲取一幀數(shù)據(jù)的大小
    memset(&stIntvalue, 0, sizeof(MVCC_INTVALUE));
    int tempValue = MV_CC_GetIntValue(m_hDevHandle, "PayloadSize", &stIntvalue);
    if (tempValue != 0)
    {
        qDebug() << "GetIntValue失敗";
        return -1;
    }else{qDebug() << "GetIntValue成功";}
    nBufSize = stIntvalue.nCurValue;
    m_pBufForDriver = (unsigned char *)malloc(nBufSize);
    MV_FRAME_OUT_INFO_EX stImageInfo;
    memset(&stImageInfo,0,sizeof(MV_FRAME_OUT_INFO));
    qDebug() << MV_CC_StartGrabbing(m_hDevHandle);
    int timeout= MV_CC_GetOneFrameTimeout(m_hDevHandle, m_pBufForDriver, nBufSize, &stImageInfo, 1000);
    if(timeout!=0)
    {
        qDebug() << "GetOneFrameTimeout失敗";
        return -1;
    }
    m_nBufSizeForSaveImage = stImageInfo.nWidth * stImageInfo.nHeight * 3 + 2048;
    m_pBufForSaveImage = (unsigned char*)malloc(m_nBufSizeForSaveImage); //向系統(tǒng)申請(qǐng)M_nBufSizeForSaveImage內(nèi)存空間

    bool isMono;//判斷是否為黑白圖像
    switch (stImageInfo.enPixelType) //像素格式
    {
    case PixelType_Gvsp_Mono8:
    case PixelType_Gvsp_Mono10:
    case PixelType_Gvsp_Mono10_Packed:
    case PixelType_Gvsp_Mono12:
    case PixelType_Gvsp_Mono12_Packed:
        isMono=true;
        break;
    default:
        isMono=false;
        break;
    }

    if(isMono)
    {
        image=Mat(stImageInfo.nHeight,stImageInfo.nWidth,CV_8UC1,m_pBufForDriver);
    }
    else
    {
        //轉(zhuǎn)換圖像格式為BGR8
        MV_CC_PIXEL_CONVERT_PARAM stConvertParam = {0};
        memset(&stConvertParam, 0, sizeof(MV_CC_PIXEL_CONVERT_PARAM));
        stConvertParam.nWidth = stImageInfo.nWidth;                 //ch:圖像寬 | en:image width
        stConvertParam.nHeight = stImageInfo.nHeight;               //ch:圖像高 | en:image height
        stConvertParam.pSrcData = m_pBufForDriver;                  //ch:輸入數(shù)據(jù)緩存 | en:input data buffer
        stConvertParam.nSrcDataLen = stImageInfo.nFrameLen;         //ch:輸入數(shù)據(jù)大小 | en:input data size
        stConvertParam.enSrcPixelType = stImageInfo.enPixelType;    //ch:輸入像素格式 | en:input pixel format
        //stConvertParam.enDstPixelType = PixelType_Gvsp_BGR8_Packed; //ch:輸出像素格式 | en:output pixel format  適用于OPENCV的圖像格式
        stConvertParam.enDstPixelType = PixelType_Gvsp_RGB8_Packed; //ch:輸出像素格式 | en:output pixel format
        stConvertParam.pDstBuffer = m_pBufForSaveImage;                    //ch:輸出數(shù)據(jù)緩存 | en:output data buffer
        stConvertParam.nDstBufferSize = m_nBufSizeForSaveImage;            //ch:輸出緩存大小 | en:output buffer size
        MV_CC_ConvertPixelType(m_hDevHandle, &stConvertParam);
        image=Mat(stImageInfo.nHeight,stImageInfo.nWidth,CV_8UC3,m_pBufForSaveImage);
    }
    return 0;
}
//設(shè)置心跳時(shí)間
int MyCanera::setHeartBeatTime(unsigned int time)
{
    //心跳時(shí)間最小為500ms
    if(time<500)
        time=500;
    int temp=MV_CC_SetIntValue(m_hDevHandle, "GevHeartbeatTimeout", time);
    if(temp!=0)
    {
        return -1;
    }
    else
    {
        return 0;
    }
}
//設(shè)置曝光時(shí)間
int MyCanera::setExposureTime(float ExposureTimeNum)
{
    int temp= MV_CC_SetFloatValue(m_hDevHandle, "ExposureTime",ExposureTimeNum );
    if(temp!=0)
        return -1;
    return 0;
}
//關(guān)閉相機(jī)
int MyCanera::closeCamera()
{
    int nRet = MV_OK;
    if (NULL == m_hDevHandle)
    {
        qDebug() << "沒(méi)有句柄,不用關(guān)閉";
        return -1;
    }
    MV_CC_CloseDevice(m_hDevHandle);
    nRet = MV_CC_DestroyHandle(m_hDevHandle);
    m_hDevHandle = NULL;
    return nRet;
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "mycanera.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    MyCanera *m_pcMycamera;
    MV_CC_DEVICE_INFO_LIST m_stDevList;//設(shè)備列表
    string cameraName; //相機(jī)名稱
    Mat imageMat; //使用OpenCV接受采集圖像
    QImage cvMat2QImage(const cv::Mat& mat);
    QImage image;


private slots:
    void on_pushButton_link_clicked();

    void on_pushButton_close_clicked();

    void on_pushButton_caiji_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

minwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mycanera.h"
#include <QDebug>
#include <QImage>
#include <QImageReader>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    m_pcMycamera = new MyCanera;
    int neRt = m_pcMycamera->EnumDevices(&m_stDevList);
    qDebug() << neRt;
    qDebug() << m_stDevList.pDeviceInfo[0]->nTLayerType;
    //獲取相機(jī)的IP地址
    if(1 == m_stDevList.pDeviceInfo[0]->nTLayerType){
        int nIp1,nIp2,nIp3,nIp4;
        nIp1 = ((m_stDevList.pDeviceInfo[0]->SpecialInfo.stGigEInfo.nCurrentIp & 0xff000000) >> 24);
        nIp2 = ((m_stDevList.pDeviceInfo[0]->SpecialInfo.stGigEInfo.nCurrentIp & 0x00ff0000) >> 16);
        nIp3 = ((m_stDevList.pDeviceInfo[0]->SpecialInfo.stGigEInfo.nCurrentIp & 0x0000ff00) >> 8);
        nIp4 = (m_stDevList.pDeviceInfo[0]->SpecialInfo.stGigEInfo.nCurrentIp & 0x000000ff);
        QString nIp = QString("%1.%2.%3.%4").arg(nIp1).arg(nIp2).arg(nIp3).arg(nIp4);
        qDebug() << nIp;
    }    
}

MainWindow::~MainWindow()
{
    delete ui;
}

//連接相機(jī)
void MainWindow::on_pushButton_link_clicked()
{
    cameraName = (char *)m_stDevList.pDeviceInfo[0]->SpecialInfo.stGigEInfo.chUserDefinedName;
    qDebug() << QString::fromStdString(cameraName);
    int linkCamera = m_pcMycamera->connectCamera(cameraName);
    qDebug() << linkCamera;
    if(linkCamera == 0){
        qDebug() << "連接相機(jī)成功";
    }else {
        qDebug() << "連接相機(jī)失敗";
    }

    //開(kāi)啟抓圖
    int satrtCamera = m_pcMycamera->startCamera();
    if(satrtCamera != 0){
        qDebug() << "啟動(dòng)相機(jī)采集失敗";
    }else {
        qDebug() << "正在啟動(dòng)相機(jī)采集信息";
    }

}

//關(guān)閉設(shè)備
void MainWindow::on_pushButton_close_clicked()
{
    //關(guān)閉設(shè)備,釋放資源
    int close = m_pcMycamera->closeCamera();
    if(close != 0){
        qDebug() << "相機(jī)關(guān)閉失敗";
    }
}
//采集單張圖像按鈕
void MainWindow::on_pushButton_caiji_clicked()
{
    //設(shè)置相機(jī)軟觸發(fā)
    int softTrigger = m_pcMycamera->softTrigger();//發(fā)送軟觸發(fā)
    if(softTrigger != 0){
        qDebug() << "失敗";
    }else {
        qDebug() << "成功觸發(fā)一次";
    }

    //讀取相機(jī)中的圖像
    int readInt = m_pcMycamera->ReadBuffer(imageMat);
    if(readInt != 0){
        qDebug() << "讀取圖像失敗";
    }
    image = cvMat2QImage(imageMat);
    ui->label_image->setPixmap(QPixmap::fromImage(image));

}

//Mat轉(zhuǎn)QImage函數(shù)
QImage MainWindow::cvMat2QImage(const cv::Mat& mat)
{
    // 8-bits unsigned, NO. OF CHANNELS = 1
    if(mat.type() == CV_8UC1)
    {
        QImage qimage(mat.cols, mat.rows, QImage::Format_Indexed8);
        // Set the color table (used to translate colour indexes to qRgb values)
        qimage.setColorCount(256);
        for(int i = 0; i < 256; i++)
        {
            qimage.setColor(i, qRgb(i, i, i));
        }
        // Copy input Mat
        uchar *pSrc = mat.data;
        for(int row = 0; row < mat.rows; row ++)
        {
            uchar *pDest = qimage.scanLine(row);
            memcpy(pDest, pSrc, mat.cols);
            pSrc += mat.step;
        }
        return qimage;
    }
    // 8-bits unsigned, NO. OF CHANNELS = 3
    else if(mat.type() == CV_8UC3)
    {
        // Copy input Mat
        const uchar *pSrc = (const uchar*)mat.data;
        // Create QImage with same dimensions as input Mat
        QImage image(pSrc, mat.cols, mat.rows, mat.step, QImage::Format_RGB888);
        return image.rgbSwapped();
    }
    else if(mat.type() == CV_8UC4)
    {
        // Copy input Mat
        const uchar *pSrc = (const uchar*)mat.data;
        // Create QImage with same dimensions as input Mat
        QImage image(pSrc, mat.cols, mat.rows, mat.step, QImage::Format_ARGB32);
        return image.copy();
    }
    else
    {
        return QImage();
    }
}

運(yùn)行結(jié)果:(ps:停止采集沒(méi)有用)

qt+opencv采集攝像頭,opencv,人工智能,qt,c++,開(kāi)發(fā)語(yǔ)言文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-716567.html

到了這里,關(guān)于Qt+OpenCV調(diào)用??迪鄼C(jī)SDK采集圖像(C++)的文章就介紹完了。如果您還想了解更多內(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)文章

  • Qt+opencv+Linux+??倒I(yè)相機(jī)連接

    Qt+opencv+Linux+??倒I(yè)相機(jī)連接

    ? ? ? ?本人需要在樹(shù)莓派上部署深度學(xué)習(xí)推理模型 ,由于本實(shí)驗(yàn)室只有海康工業(yè)相機(jī),因此通過(guò)借鑒博客和自主調(diào)試,完成了模型的部署。本文主要講述如何在基于linux的Qt中成功連接海康工業(yè)相機(jī),第一次嘗試寫(xiě)博客,練練手感。 ? ? ? 1、安裝??倒I(yè)相機(jī)自帶的MVS ?

    2024年02月01日
    瀏覽(34)
  • 【Qt】用QWidget顯示opencv采集的攝像頭圖像

    【Qt】用QWidget顯示opencv采集的攝像頭圖像

    本案例用QWidget容器重寫(xiě)paintEvent函數(shù)來(lái)顯示OpenCv采集的攝像頭畫(huà)面,圖像還可以自適應(yīng)QWidget的大小,還可以檢測(cè)相機(jī)斷開(kāi)失聯(lián)的情況(可能是掉電、線被拔了等待)。在改變窗口大小時(shí)暫停顯示圖像,防止莫名其妙的卡頓奔潰錯(cuò)誤?。@示圖像的方式有很多種,可以用QLabel顯

    2024年02月13日
    瀏覽(43)
  • ??倒I(yè)相機(jī)SDK連接demo,Qt界面顯示

    ??倒I(yè)相機(jī)SDK連接demo,Qt界面顯示

    在機(jī)器視覺(jué)開(kāi)發(fā)過(guò)程中,經(jīng)常使用工業(yè)相機(jī)采集圖像,以下采用??禉C(jī)器人提供的SDK開(kāi)發(fā)demo,使用語(yǔ)言C++,界面顯示使用的Qt。SDK來(lái)自MVS 3.1版本中附屬的Development文件夾。完整的項(xiàng)目鏈接地址為: ??倒I(yè)相機(jī)SDK的Demo源代碼C++版本 附錄??倒I(yè)相機(jī)的命名方式: 海康工業(yè)相

    2024年02月13日
    瀏覽(26)
  • ??倒I(yè)相機(jī)SDK + OpenCV實(shí)例(4):相機(jī)參數(shù)設(shè)置詳解

    前文海康工業(yè)相機(jī)SDK + OpenCV實(shí)例(3):相機(jī)初始化Bug調(diào)試講述了相機(jī)初始化可能遇到的問(wèn)題。本文講解??倒I(yè)相機(jī)設(shè)置參數(shù)的相關(guān)接口,其中,會(huì)重點(diǎn)講解 自動(dòng)曝光時(shí)間調(diào)整亮度 , 圖像對(duì)比度調(diào)整 。 ??礢DK提供一系列參數(shù)設(shè)置的接口,本節(jié)主要講解幾個(gè)萬(wàn)能接口的使用,

    2024年02月11日
    瀏覽(401)
  • (一)Qt下實(shí)現(xiàn)多個(gè)海康工業(yè)相機(jī)內(nèi)觸發(fā)采集回調(diào)取流顯示

    (一)Qt下實(shí)現(xiàn)多個(gè)??倒I(yè)相機(jī)內(nèi)觸發(fā)采集回調(diào)取流顯示

    提示:這里是該系列文章的所有文章的目錄 第一章:(一)Qt下實(shí)現(xiàn)多個(gè)??倒I(yè)相機(jī)內(nèi)觸發(fā)采集回調(diào)取流顯示 第二章:(二)Qt下多線程實(shí)現(xiàn)多個(gè)??倒I(yè)相機(jī)內(nèi)觸發(fā)采集回調(diào)取流顯示 在我之前所記錄的關(guān)于??倒I(yè)相機(jī)的系列文章中 ,講述的是使用外觸發(fā)采集模式中的

    2024年02月16日
    瀏覽(30)
  • (二)Qt下多線程實(shí)現(xiàn)多個(gè)??倒I(yè)相機(jī)內(nèi)觸發(fā)采集回調(diào)取流顯示

    (二)Qt下多線程實(shí)現(xiàn)多個(gè)??倒I(yè)相機(jī)內(nèi)觸發(fā)采集回調(diào)取流顯示

    提示:這里是該系列文章的所有文章的目錄 第一章:(一)Qt下實(shí)現(xiàn)多個(gè)海康工業(yè)相機(jī)內(nèi)觸發(fā)采集回調(diào)取流顯示 第二章:(二)Qt下多線程實(shí)現(xiàn)多個(gè)??倒I(yè)相機(jī)內(nèi)觸發(fā)采集回調(diào)取流顯示 在本系列的上一篇文章中,我們講述了實(shí)現(xiàn)海康工業(yè)相機(jī)的連接,采用內(nèi)觸發(fā)采集模式,

    2024年02月16日
    瀏覽(115)
  • C++下OPENCV驅(qū)動(dòng)調(diào)用??礕igE工業(yè)相機(jī)

    C++下OPENCV驅(qū)動(dòng)調(diào)用??礕igE工業(yè)相機(jī)

    第一章 Ubuntu22下OpenCV4.6.0+contrib模塊編譯安裝 第二章 ubuntu22下C++ kdevelop環(huán)境搭建:OpenCV示例 第三章 C++下OPENCV驅(qū)動(dòng)調(diào)用??礕igE工業(yè)相機(jī) 在前兩章內(nèi)筆者詳細(xì)敘述了如何編譯以及加載opencv庫(kù),本文將從opencv出發(fā),在linux系統(tǒng)下利用??倒I(yè)攝像機(jī)的SDK完成基于??倒I(yè)相機(jī)的o

    2024年02月06日
    瀏覽(34)
  • 大恒水星相機(jī)SDK(實(shí)時(shí)采集)基于QT與C++

    大恒水星相機(jī)SDK(實(shí)時(shí)采集)基于QT與C++

    資料文檔下載 本次的開(kāi)發(fā)環(huán)境是基于vs2019使用QT的框架對(duì)大恒相機(jī)的SDK進(jìn)行實(shí)時(shí)采集的操作。我們從零開(kāi)始講,根據(jù)上面的 資料文檔 我們來(lái)添加一個(gè)新的項(xiàng)目,并且將C++的庫(kù)文件添加進(jìn)去。 首先,我們新建的時(shí)候使用QT的模板。 記住我們新建的路徑,下面添加庫(kù)文件的時(shí)候

    2024年02月04日
    瀏覽(167)
  • 【項(xiàng)目實(shí)踐】??低暪I(yè)相機(jī)SDK開(kāi)發(fā)小白版入門(mén)教程(VS2015+OpenCV4.5.1)

    【項(xiàng)目實(shí)踐】海康威視工業(yè)相機(jī)SDK開(kāi)發(fā)小白版入門(mén)教程(VS2015+OpenCV4.5.1)

    ??由于學(xué)校要求暑期實(shí)習(xí),于是找了一位學(xué)長(zhǎng)開(kāi)的公司,接了一個(gè)項(xiàng)目,是 對(duì)??低暪I(yè)相機(jī)(MV_CE200_10GM)進(jìn)行二次開(kāi)發(fā),讀取其圖像并做分析處理。 于是花了一點(diǎn)時(shí)間查找的相關(guān)資料并記錄一些 入門(mén)要點(diǎn) 。 ??想先說(shuō)說(shuō)一些 “嘗試授人與漁” 的話,也是自己的一

    2024年02月04日
    瀏覽(39)
  • 如何降低???、大華等網(wǎng)絡(luò)攝像頭調(diào)用的高延遲問(wèn)題(一):??低暰W(wǎng)絡(luò)攝像頭的python sdk使用(opencv讀取sdk流)

    如何降低???、大華等網(wǎng)絡(luò)攝像頭調(diào)用的高延遲問(wèn)題(一):??低暰W(wǎng)絡(luò)攝像頭的python sdk使用(opencv讀取sdk流)

    目錄 1.python sdk使用 1.??礢DK下載 ?2.opencv讀取sdk流 ?先說(shuō)效果,我是用的AI推理的實(shí)時(shí)流,延遲從高達(dá)7秒降到小于1秒 如果覺(jué)得這個(gè)延遲還不能接受,下一章,給大家介紹點(diǎn)上不得臺(tái)面的小方法 SDK(Software Development Kit)是軟件開(kāi)發(fā)工具包的縮寫(xiě),它是一組用于開(kāi)發(fā)特定軟件或

    2024年02月07日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包