basicly done
This commit is contained in:
parent
ed0895405a
commit
0cc98925c2
@ -28,18 +28,18 @@ target_include_directories(${PROJECT_NAME} PRIVATE
|
||||
# ====== inner headers ======
|
||||
|
||||
# ====== Qt6 & OpenCV ======
|
||||
set(Qt6_DIR "D:/Environments/Qt/Qt6.9/6.9.0/msvc2022_64/lib/cmake/Qt6" CACHE PATH "Path to Qt6 SDK")
|
||||
set(Qt6_DIR "D:/ProgramData/Qt6.9/6.9.0/msvc2022_64/lib/cmake/Qt6" CACHE PATH "Path to Qt6 SDK")
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets)
|
||||
|
||||
set(OpenCV_DIR "D:/Environments/opencv/build" CACHE PATH "Path to OpenCV SDK")
|
||||
set(OpenCV_DIR "D:/ProgramData/OpenCV4.11.0/build" CACHE PATH "Path to OpenCV SDK")
|
||||
find_package(OpenCV REQUIRED)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${OpenCV_LIBS})
|
||||
# ====== Qt6 & OpenCV ======
|
||||
|
||||
|
||||
# ====== MVS ======
|
||||
set(MVS_DIR "D:/Environments/MVS/Development" CACHE PATH "Path to MVS SDK")
|
||||
set(MVS_DIR "D:/Program Files/MVS/Development" CACHE PATH "Path to MVS SDK")
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE
|
||||
${MVS_DIR}/Includes
|
||||
|
||||
@ -1,27 +1,27 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "x64-Debug",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": ""
|
||||
},
|
||||
{
|
||||
"name": "x64-Release",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Release",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"variables": []
|
||||
}
|
||||
]
|
||||
"configurations": [
|
||||
{
|
||||
"name": "x64-Debug",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": ""
|
||||
},
|
||||
{
|
||||
"name": "x64-Release",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Release",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"variables": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,11 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include <QObject>
|
||||
#include <QImage>
|
||||
|
||||
#include <CameraParams.h>
|
||||
#include <MvCameraControl.h>
|
||||
#include <MvErrorDefine.h>
|
||||
#include <PixelType.h>
|
||||
|
||||
class HikCamera{
|
||||
class HikCamera : public QObject{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
// 获取单例实例
|
||||
static HikCamera &getInstance() {
|
||||
@ -31,6 +36,9 @@ public:
|
||||
// 注册图像回调函数
|
||||
void registerImageCallback();
|
||||
|
||||
// 回调图像处理函数
|
||||
void handleFrameData(unsigned char *pData, MV_FRAME_OUT_INFO_EX *pFrameInfo);
|
||||
|
||||
// 禁用拷贝和移动
|
||||
HikCamera(const HikCamera &) = delete;
|
||||
HikCamera(HikCamera &&) = delete;
|
||||
@ -45,4 +53,7 @@ private:
|
||||
|
||||
// 相机句柄
|
||||
void *m_handler = nullptr;
|
||||
|
||||
signals:
|
||||
void newImage(const QImage &qimage);
|
||||
};
|
||||
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <QtWidgets>
|
||||
#include <QImage>
|
||||
|
||||
class HikWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
@ -11,6 +12,9 @@ private:
|
||||
void initUI();
|
||||
void connectAllSignalsAndSlots();
|
||||
|
||||
// 图像变量
|
||||
QImage m_image;
|
||||
|
||||
// 左侧视图
|
||||
QGraphicsScene *m_scene;
|
||||
QGraphicsPixmapItem *m_pixmapItem;
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
// 静态成员函数作为SDK回调函数
|
||||
static void __stdcall ImageCallback(unsigned char *pData, MV_FRAME_OUT_INFO_EX *pFrameInfo, void *pUser) {
|
||||
// 将用户数据转换为HikCamera实例
|
||||
/*HikCamera *instance = static_cast<HikCamera *>(pUser);
|
||||
HikCamera *instance = static_cast<HikCamera *>(pUser);
|
||||
if (instance) {
|
||||
instance->handleFrameData(pData, pFrameInfo);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
void HikCamera::init() {
|
||||
@ -27,6 +27,10 @@ void HikCamera::init() {
|
||||
|
||||
// 打开相机
|
||||
nRet = MV_CC_OpenDevice(m_handler);
|
||||
|
||||
// 设置像素格式为 RGB8
|
||||
nRet = MV_CC_SetEnumValue(m_handler, "PixelFormat", PixelType_Gvsp_RGB8_Packed);
|
||||
if (nRet == MV_OK) { std::cout << "Set pixel fomat succeed" << std::endl; }
|
||||
}
|
||||
|
||||
void HikCamera::deinit() {
|
||||
@ -57,5 +61,19 @@ void HikCamera::setGain(double gain) {}
|
||||
|
||||
void HikCamera::registerImageCallback() {
|
||||
int nRet = MV_OK;
|
||||
nRet = MV_CC_RegisterImageCallBackEx(m_handler, ImageCallback, nullptr);
|
||||
nRet = MV_CC_RegisterImageCallBackEx(m_handler, ImageCallback, this);
|
||||
nRet = MV_CC_SetImageNodeNum(m_handler, 10);
|
||||
}
|
||||
|
||||
void HikCamera::handleFrameData(unsigned char *pData, MV_FRAME_OUT_INFO_EX *pFrameInfo) {
|
||||
if (!pData) {
|
||||
std::cout << "New image nullptr" << std::endl;
|
||||
}
|
||||
const int width = pFrameInfo->nExtendWidth;
|
||||
const int height = pFrameInfo->nExtendHeight;
|
||||
const int dataBytesPerLine = pFrameInfo->nExtendWidth * 3;
|
||||
|
||||
QImage deepCopy(width, height, QImage::Format_RGB888);
|
||||
if (pData) { memcpy(deepCopy.bits(), pData, pFrameInfo->nFrameLenEx); }
|
||||
emit newImage(deepCopy);
|
||||
}
|
||||
|
||||
@ -196,4 +196,15 @@ void HikWidget::connectAllSignalsAndSlots() {
|
||||
HikCamera::getInstance().setGain(value);
|
||||
});
|
||||
|
||||
// 新图像到来
|
||||
connect(&HikCamera::getInstance(), &HikCamera::newImage, this,
|
||||
[this](const QImage &qimage) {
|
||||
if (qimage.isNull()) {
|
||||
qDebug() << "Qimage invalid";
|
||||
}
|
||||
m_image = qimage;
|
||||
QPixmap pixmap = QPixmap::fromImage(qimage);
|
||||
m_pixmapItem->setPixmap(pixmap);
|
||||
m_gv->fitInView(m_pixmapItem, Qt::KeepAspectRatio);
|
||||
}, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user