cmake pylon6 opencv

https://blog.csdn.net/QianBright

操作系统 ubuntu 20.04
在CMakeLists.txt里添加对应的pylon或者opencv
然后,对于pylon还有一个foundpylon的cmake。在工程目录下创建一个cmake的文件夹。里面有一个FindPylon.cmake.
内容放在最后。
在这里插入图片描述
在这里插入图片描述

cmake_minimum_required(VERSION 3.5)

project(qttest VERSION 0.1 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# *****pylon******
find_package(Pylon QUIET)
if (NOT ${Pylon_FOUND})
    include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindPylon.cmake")
endif()
# *****pylon******

find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)

# *****opencv******
# find required opencv
find_package(OpenCV REQUIRED)
# directory of opencv headers
include_directories(${OpenCV_INCLUDE_DIRS})
# *****opencv******

# *****pylon******
include_directories(${Pylon_INCLUDE_DIRS})
# *****pylon******

set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(qttest
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET qttest APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(qttest SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(qttest
            ${PROJECT_SOURCES}
        )
    endif()
endif()

# *****opencv******
# directory of opencv library
link_directories(${OpenCV_LIBRARY_DIRS})
# opencv libraries
target_link_libraries(qttest PRIVATE ${OpenCV_LIBS})
# *****opencv******
# *****pylon******
target_link_libraries(qttest PRIVATE ${Pylon_LIBRARIES})
# *****pylon******

target_link_libraries(qttest PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

set_target_properties(qttest PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(qttest)
endif()

FindPylon.cmake

set(PYLON_ROOT $ENV{PYLON_ROOT})
if (NOT DEFINED ENV{PYLON_ROOT})
    set(PYLON_ROOT "/opt/pylon")
endif()

set(_PYLON_CONFIG "${PYLON_ROOT}/bin/pylon-config")
if (EXISTS "${_PYLON_CONFIG}")
    set(Pylon_FOUND TRUE)
    execute_process(COMMAND ${_PYLON_CONFIG} --cflags-only-I OUTPUT_VARIABLE HEADERS_OUT)
    execute_process(COMMAND ${_PYLON_CONFIG} --libs-only-l OUTPUT_VARIABLE LIBS_OUT)
    execute_process(COMMAND ${_PYLON_CONFIG} --libs-only-L OUTPUT_VARIABLE LIBDIRS_OUT)
    string(REPLACE " " ";" HEADERS_OUT "${HEADERS_OUT}")
    string(REPLACE "-I" "" HEADERS_OUT "${HEADERS_OUT}")
    string(REPLACE "\n" "" Pylon_INCLUDE_DIRS "${HEADERS_OUT}")

    string(REPLACE " " ";" LIBS_OUT "${LIBS_OUT}")
    string(REPLACE "-l" "" LIBS_OUT "${LIBS_OUT}")
    string(REPLACE "\n" "" Pylon_LIBRARIES "${LIBS_OUT}")

    string(REPLACE " " ";" LIBDIRS_OUT "${LIBDIRS_OUT}")
    string(REPLACE "-L" "" LIBDIRS_OUT "${LIBDIRS_OUT}")
    string(REPLACE "\n" "" LIBDIRS_OUT "${LIBDIRS_OUT}")

    set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
    foreach (LIBDIR ${LIBDIRS_OUT})
        link_directories(${LIBDIR})
    endforeach()
else()
    set(Pylon_FOUND FALSE)
endif()

移植到Windows

选择编译器

在这里插入图片描述

CMakeList.txt

将文件路径改成自己的

cmake_minimum_required(VERSION 3.5)

project(camera VERSION 0.1 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
find_package(Qt6 COMPONENTS Network REQUIRED)


#set(Pylon_DIR "D:\\Software\\Basler\\pylon 6\\Development\\lib\\x64")
#set(PYLON_ROOT "D:\\Software\\Basler\\Development")

set(Pylon_INCLUDE_DIRS "D:\\Software\\Basler\\pylon 6\\Development\\include")
set(Pylon_LIBRARIES "D:\\Software\\Basler\\pylon 6\\Development\\lib\\x64")

#find_package(Pylon REQUIRED)
#find_package(Pylon QUIET)
#if (NOT ${Pylon_FOUND})
#    include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindPylon.cmake")
#endif()
include_directories(${Pylon_INCLUDE_DIRS})


set(OpenCV_DIR "D:\\Software\\opencv\\build\\x64\\vc15\\lib")
# *****opencv******
# find required opencv
find_package(OpenCV REQUIRED)
# directory of opencv headers
include_directories(${OpenCV_INCLUDE_DIRS})
# *****opencv******


set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
        inc/camera.h
        inc/bbaslercamercontrol.h
        src/bbaslercamercontrol.cpp
        inc/imgView.h
        src/imgView.cpp
        inc/serverSocket.h
        src/serverSocket.cpp
        inc/detect_target.h
        src/detect_target.cpp
        inc/calibrate.h
        src/calibrate.cpp
        inc/transformer.h
        src/transformer.cpp
)



if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(camera
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET camera APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(camera SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(camera
            ${PROJECT_SOURCES}
        )
    endif()
endif()

# *****opencv******
# directory of opencv library
link_directories(${OpenCV_LIBRARY_DIRS})
# opencv libraries
target_link_libraries(camera PRIVATE ${OpenCV_LIBS})
# *****opencv******
link_directories(${Pylon_LIBRARIES})
link_libraries("${Pylon_LIBRARIES}\\GCBase_MD_VC141_v3_1_Basler_pylon.lib")
link_libraries("${Pylon_LIBRARIES}\\GenApi_MD_VC141_v3_1_Basler_pylon.lib")
link_libraries("${Pylon_LIBRARIES}\\PylonBase_v6_3.lib")
link_libraries("${Pylon_LIBRARIES}\\PylonC.lib")
link_libraries("${Pylon_LIBRARIES}\\PylonGUI_v6_3.lib")
link_libraries("${Pylon_LIBRARIES}\\PylonUtility_v6_3.lib")


target_include_directories(camera PRIVATE ${Pylon_INCLUDE_DIRS})
target_link_directories(camera PRIVATE ${Pylon_LIBRARIES})
target_link_libraries(camera PRIVATE "${Pylon_LIBRARIES}\\GCBase_MD_VC141_v3_1_Basler_pylon.lib")
target_link_libraries(camera PRIVATE "${Pylon_LIBRARIES}\\GenApi_MD_VC141_v3_1_Basler_pylon.lib")
target_link_libraries(camera PRIVATE "${Pylon_LIBRARIES}\\PylonBase_v6_3.lib")
target_link_libraries(camera PRIVATE "${Pylon_LIBRARIES}\\PylonC.lib")
target_link_libraries(camera PRIVATE "${Pylon_LIBRARIES}\\PylonGUI_v6_3.lib")
target_link_libraries(camera PRIVATE "${Pylon_LIBRARIES}\\PylonUtility_v6_3.lib")

target_link_libraries(camera PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(camera PRIVATE Qt6::Network)

set_target_properties(camera PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(camera)
endif()

报错

会出现一大堆错误,但是大概率是和windows冲突了
其中一个是 删掉using namespace cv改成cv::这样。
另一个是 删掉using namespace std改成std::这样。
这样就剩下警告了

使用了pylon导致的可以在文件头加入#pragma pack(8)具体为什么是8我乱填的可以查一下有关方面字节对齐的资料,如果您明白了务必分享给我,谢谢!

还有就是在创建文件夹我不知道为什么同样的程序windows就无法创建成功
ubuntu下可以的

    QDir devParaSaveDir(QDir::currentPath()+"dev");
    if (!devParaSaveDir.exists()) {
      if (!devParaSaveDir.mkdir())
        QMessageBox::warning(this, tr("ERROR"), tr("未知错误"));
    }

修改后在windows下

    QDir devParaSaveDir(QDir::currentPath());
    if (!devParaSaveDir.exists("dev")) {
      if (!devParaSaveDir.mkdir("dev"))
        QMessageBox::warning(this, tr("ERROR"), tr("未知错误"));
    }

如果您明白了务必分享给我,谢谢!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要通过源码安装OpenCV,你需要按照以下步骤进行操作: 1. 首先,你需要下载OpenCV的源码文件。你可以在OpenCV的官方GitHub页面中找到源码文件,链接为:https://github.com/opencv/opencv。 2. 下载OpenCV_contrib,它是OpenCV的拓展库。确保你下载的OpenCV_contrib版本与你下载的OpenCV版本相匹配,链接为:https://github.com/opencv/opencv_contrib。 3. 安装CMake。你可以从CMake的官方网站上下载CMake的安装程序,链接为:https://cmake.org。 4. 安装Visual Studio(VS)。你可以从微软的官方网站上下载Visual Studio的安装程序,链接为:https://visualstudio.microsoft.com/zh-hans。 5. 配置环境变量。将OpenCVCMake的安装路径添加到系统的环境变量中,以便在任何目录下都可以使用它们。 6. 使用CMake来生成编译配置文件。打开CMake,选择OpenCV的源码目录和一个用于构建的输出目录。点击“Configure”按钮,选择你的编译器(例如Visual Studio),然后点击“Generate”按钮。 7. 编译OpenCV的基本库。等待配置和生成过程完成后,你可以看到下方显示“Configuring done Generating done”。这意味着OpenCV的基本库已经成功编译。 8. 如果你需要编译OpenCV_contrib(拓展库),你可以继续进行编译。在CMake中,选择OpenCV_contrib的源码目录和与基本库相同的输出目录。点击“Configure”按钮,然后点击“Generate”按钮。 9. 最后,使用你选择的编译器来编译OpenCV_contrib。根据你的编译器和操作系统的不同,具体的编译步骤可能会有所不同。 完成以上步骤后,你就成功地通过源码完成了OpenCV的安装。请注意,这只是一个大致的步骤指导,具体的细节可能会因为操作系统和工具版本的差异而有所不同。为了确保成功安装OpenCV,建议你查阅官方的安装文档或者参考相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

织蛾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值