《QT 5.14.1 搭建 opencv 环境全攻略》
《QT 5.14.1 搭建 opencv 环境全攻略》
- 一、引言
- 二、准备工作
- (一)软件下载
- (二)系统环境确认
- 三、安装 QT 5.14.1
- (一)安装包下载与运行
- (二)环境变量配置
- 四、OpenCV 安装与配置
- (一)下载与解压
- (二)使用 CMake 生成项目文件
- (三)编译与安装
- 五、在 QT 项目中配置 OpenCV
- (一)创建 QT 项目
- (二)项目文件.pro 配置
- 六、测试环境搭建是否成功
- 七、常见问题与解决方法
- 八、总结与展望
一、引言
在当今数字化飞速发展的时代,计算机视觉技术的应用日益广泛,已然成为众多领域中不可或缺的一部分。而 OpenCV 作为一个开源的计算机视觉和机器学习软件库,更是发挥着举足轻重的作用。它涵盖了图像处理、特征提取、目标检测、运动分析、人脸识别等极为广泛的功能,从最基本的读写图片、降噪滤波、边缘检测,到复杂的行人检测、人脸识别、文本识别等,都能轻松应对。例如在视频监控领域,OpenCV 可通过识别和分析视频中的运动信息,实现实时预警、跟踪目标,提高监控系统的智能化水平;在人机交互方面,其人脸识别功能助力实现人脸解锁、智能语音助手等便捷方式;自动驾驶领域中,也依靠它的目标检测和运动分析功能保障行驶的安全与高效;甚至在医学影像分析上,能帮助医生更准确高效地诊断病情。
与此同时,QT 作为跨平台的 C++ 图形用户界面库,有着丰富的控件库以及高效的信号槽机制等诸多优势,能够帮助开发者打造出美观且易用的界面,让用户交互变得更加便捷高效。
当我们把 OpenCV 和 QT 5.14.1 结合起来时,更是能碰撞出奇妙的火花。OpenCV 负责强大的底层算法运算,QT 5.14.1 则完成上层的应用接口搭建,二者相辅相成,不仅可以简化开发流程,还能提升开发效率,拓展应用的功能与适用范围。然而,要想充分发挥它们结合的优势,首先就需要搭建好对应的开发环境。接下来,我们就详细地介绍一下 QT 5.14.1 搭建 OpenCV 环境的具体步骤,帮助大家顺利迈出开发的第一步,开启计算机视觉应用开发的精彩之旅。
二、准备工作
(一)软件下载
- QT 5.14.1:可以从 QT
官方网站(https://download.qt.io/archive/qt/5.14.1/)下载对应版本的安装包,根据操作系统选择合适的版本,如 Windows 系统下的 qt-opensource-windows-x86-5.14.1.exe。 - OpenCV:推荐使用 OpenCV 4.0 及以上版本,以获取更好的性能和更多的功能支持。从 OpenCV 官方网站(https://opencv.org/releases/)下载相应版本的源代码或预编译库,例如
opencv-4.5.0-vc14_vc15.exe(适用于 Windows 且与 Visual Studio 编译器兼容)。 - CMake:这是一个跨平台的安装工具,用于构建 OpenCV 库。可从 CMake 官方网站(https://cmake.org/download/)下载,如 cmake-3.20.0-win64-x64.msi(Windows 64 位版本)。
(二)系统环境确认
- 操作系统:确保使用的是 Windows 7 及以上版本,建议使用 Windows 10,以保证系统的稳定性和兼容性。
- 硬件配置:处理器建议选用 Intel Core i5 及以上,内存至少 4GB(推荐 8GB 或更高),硬盘空间需预留足够空间用于安装 QT、OpenCV 及相关工具,建议至少 10GB 以上可用空间,显卡最好支持 OpenGL 3.0 及以上版本,以确保良好的图形处理性能。
三、安装 QT 5.14.1
(一)安装包下载与运行
- 首先,从 QT 官方网站(https://download.qt.io/archive/qt/5.14.1/)下载 QT 5.14.1
的安装包,根据您的操作系统选择合适的版本,如 Windows 系统下的 “qt-opensource-windows-x86-5.14.1.exe”。 - 下载完成后,双击运行安装包,进入安装向导。在安装过程中,您需要按照提示逐步操作:
- 登录:如果您已有 QT 账号,可以登录;若没有账号,也可以选择跳过此步骤(在安装时断网可自动跳过登录步骤)。
- 选择同意许可协议,点击 “Next”。
- 选择安装目录:建议选择一个磁盘空间充足的位置,安装过程大约需要 3.2G 的空间。例如,您可以选择 “D:\Qt\5.14.1” 作为安装目录(具体路径可根据您的实际情况调整)。
- 选择组件:这一步非常重要,建议至少勾选 “Qt Creator”(这是 QT 的集成开发环境,方便后续开发)、“MSVC 2017 64-bit”(如果您的系统是 64 位且使用 Visual Studio 编译器)以及 “Qt Charts”“Qt Multimedia” 等常用组件,以满足不同的开发需求。当然,如果您不确定具体需要哪些组件,可以先选择默认的全部安装,后续也可以通过维护工具进行组件的添加或删除。
- 点击 “Install” 开始安装,等待安装过程完成。
(二)环境变量配置
- 安装完成后,需要将 QT 的相关路径添加到系统环境变量中,以便系统能够识别 QT 的命令和工具。以下是具体步骤:
- 在 Windows 系统中,右键点击 “此电脑”,选择 “属性”。
- 在弹出的窗口中,点击 “高级系统设置”。
- 在 “系统属性” 窗口的 “高级” 选项卡下,点击 “环境变量” 按钮。
- 在 “系统变量” 列表中,找到 “Path” 变量,点击 “编辑”。
- 在 “编辑环境变量” 窗口中,点击 “新建”,将 QT 的安装目录下的 “bin” 文件夹路径添加进去,例如 “D:\Qt\5.14.1\mingw73_64\bin”(如果您使用的是 MinGW 编译器)或
“D:\Qt\5.14.1\msvc2017_64\bin”(如果您使用的是 MSVC 编译器)。注意,这里的路径要根据您实际的安装情况进行填写。 - 依次点击 “确定” 关闭各个窗口,完成环境变量的配置。
配置完成后,您可以在命令提示符(CMD)中输入 “qmake -v” 命令来验证 QT 是否安装成功。如果成功安装,将显示 QT 的版本信息等相关内容,这表明您的系统已经能够正确识别 QT 的命令,为后续的开发工作做好了准备。
四、OpenCV 安装与配置
(一)下载与解压
- 前往 OpenCV 官方网站(https://opencv.org/releases/),依据系统及开发需求挑选合适版本的 OpenCV 进行下载,如 Windows 系统可选择 “opencv-4.5.0-vc14_vc15.exe”(此版本适用于与 Visual Studio 编译器配合使用)。
- 下载完成后,运行安装程序,在安装过程中,可将 OpenCV 解压至指定目录,例如 “D:\OpenCV\4.5.0”,以便后续操作中能便捷地找到相关文件。
(二)使用 CMake 生成项目文件
- 打开 CMake 软件,在 “Where is the source code” 一栏中选定 OpenCV 的源文件目录,即之前解压的 OpenCV 文件夹下的 “sources” 目录,例如 “D:\OpenCV\4.5.0\sources”。
- 在 “Where to build the binaries” 处指定一个用于存放编译后文件及中间文件的目录,建议新建一个文件夹,如 “D:\OpenCV\4.5.0\build”。
- 点击 “Configure” 按钮,此时会弹出一个对话框,根据您的编译器类型进行选择,如使用 Visual Studio 2019,可选择 “Visual Studio 16 2019”,并依据系统架构选择 “x64” 或 “x86”,然后点击 “Finish”。CMake 开始进行配置过程,这可能需要一些时间,期间可能会出现一些红色的错误提示,这是因为某些依赖项未找到或配置不正确。
- 配置完成后,在 CMake 的界面中,找到 “BUILD_opencv_world” 选项并勾选,它会将 OpenCV 的各个模块编译成一个单独的库文件,方便后续使用。再次点击 “Configure”,等待配置完成,直到界面中不再出现红色错误提示。
- 最后,点击 “Generate” 按钮,生成用于编译 OpenCV 的项目文件,成功后即可关闭 CMake。
(三)编译与安装
- 使用 Visual Studio 或其他您选择的编译器打开之前由 CMake 生成的项目文件,通常位于
“D:\OpenCV\4.5.0\build” 目录下,找到对应的解决方案文件(.sln)并双击打开。 - 在编译器中,将编译模式调整为 “Release”(如果您需要发布版本的库文件;如果是用于调试,则选择 “Debug” 模式),然后选择 “生成” 菜单中的 “生成解决方案” 选项,开始编译 OpenCV 库文件。编译过程可能会持续较长时间,具体时长取决于您的计算机性能。
- 编译成功后,找到 “INSTALL” 项目(通常在解决方案资源管理器中),右键点击并选择 “生成”,这将把编译好的 OpenCV 库文件、头文件以及其他相关文件安装到指定的目录下,默认安装目录为 “D:\OpenCV\4.5.0\install”(如果在 CMake 配置过程中未修改安装路径)。
至此,OpenCV 已成功安装并配置完成,接下来就可以在 QT 5.14.1 项目中使用 OpenCV 库进行开发了。
五、在 QT 项目中配置 OpenCV
(一)创建 QT 项目
- 打开 QT Creator,点击 “File” 菜单,选择 “New File or Project” 选项,弹出新建项目向导。
- 在向导中,选择 “Qt Widgets Application”(这是一个常用的基于部件的窗体 界面程序模板),点击 “Choose” 按钮。
- 接着,为项目命名(例如 “OpenCV_QT_Project”)并选择项目保存的位置(建议选择一个无中文、无空格且容易找到的路径),然后点击 “Next”。
- 在 “Kit Selection” 页面,确保选择了之前安装的 QT 5.14.1 版本对应的编译器(如 “Desktop Qt 5.14.1 MinGW 64-bit”),点击 “Next”。
- 在 “Class Information” 页面,保持默认的基类(如 “QMainWindow”),点击 “Next”,然后点击 “Finish” 完成项目创建。此时,QT Creator 会生成一个基础的项目结构,包括.pro 文件、源文件(.cpp)、头文件(.h)和界面文件(.ui)等。
(二)项目文件.pro 配置
- 在 QT Creator 的项目视图中,找到并双击打开项目的.pro 文件,在文件末尾添加以下几行代码:
# 添加OpenCV的头文件路径
INCLUDEPATH += D:/OpenCV/4.5.0/install/include
INCLUDEPATH += D:/OpenCV/4.5.0/install/include/opencv2# 添加OpenCV的库文件路径(根据实际安装路径和编译模式进行调整)
win32:CONFIG(release, debug|release):{LIBS += -LD:/OpenCV/4.5.0/install/x64/mingw/lib/LIBS += -lopencv_world450
}
else:win32:CONFIG(debug, debug|release):{LIBS += -LD:/OpenCV/4.5.0/install/x64/mingw/lib/LIBS += -lopencv_world450d
}
- 上述代码中,INCLUDEPATH 用于指定 QT 项目寻找 OpenCV 头文件的路径,确保项目能够找到 opencv.hpp 等头文件,从而正确识别和使用 OpenCV 的函数和数据结构。LIBS 则用于指定 OpenCV 库文件的路径和需要链接的库文件名,-L 表示库文件的路径,-l 表示要链接的库文件,这里的 opencv_world450(或 opencv_world450d,d 表示 debug 版本)是在 OpenCV 编译过程中生成的库文件名,它包含了 OpenCV 的各个模块,方便在项目中进行链接和使用。注意,路径中的 D:/OpenCV/4.5.0/install 应根据您实际的 penCV 安装路径进行修改,如果您使用的是其他版本的 OpenCV 或者安装路径不同,都需要相应地调整这些路径。
完成上述配置后,QT 项目就能够成功找到并使用 OpenCV 库了,接下来就可以在项目中编写代码,调用 OpenCV 的强大功能来实现各种计算机视觉任务,如图像处理、目标检测、特征提取等。例如,可以在 main.cpp 文件中添加以下代码来测试 OpenCV 是否配置成功:
#include <QApplication>
#include <opencv2/opencv.hpp>int main(int argc, char *argv[])
{QApplication a(argc, argv);// 读取一张图片(请确保路径正确)cv::Mat img = cv::imread("D:/test_image.jpg");if (img.empty()){return -1;}// 显示图片(这里使用 OpenCV 的 imshow 函数,实际应用中可将图片转换为 QT 可显示的格式进行显示)cv::imshow("Image", img);cv::waitKey(0);return a.exec();
}
这段代码使用 OpenCV 的 imread 函数读取一张图片,如果图片读取成功,则使用 imshow 函数显示该图片,并通过 waitKey 函数等待用户按键关闭窗口。如果程序能够成功运行并显示出图片,说明 QT 项目中 OpenCV 的配置已经成功,您可以继续在项目中深入开发各种计算机视觉应用。
六、测试环境搭建是否成功
以下提供一段简单的代码示例,用于测试 OpenCV 环境是否在 QT 项目中成功搭建:
#include <QApplication>
#include <opencv2/opencv.hpp>int main(int argc, char *argv[])
{QApplication a(argc, argv);// 读取一张图片(请确保路径正确)cv::Mat img = cv::imread("D:/test_image.jpg");if (img.empty()){return -1;}// 显示图片(这里使用OpenCV的imshow函数,实际应用中可将图片转换为QT可显示的格式进行显示)cv::imshow("Image", img);cv::waitKey(0);return a.exec();
}
在上述代码中,首先使用cv::imread函数尝试读取一张指定路径下的图片。如果图片读取成功,即img不为空,接着使用cv::imshow函数将图片显示出来,并通过cv::waitKey(0)等待用户按键操作,防止窗口一闪而过。若程序能够顺利运行并弹出显示图片的窗口,就表明 OpenCV 环境在 QT 项目中已经成功搭建,开发者可以在此基础上进一步利用 OpenCV 的丰富功能进行更复杂的计算机视觉任务开发,比如图像的滤波、特征提取、目标检测等;若程序运行出错,无法显示图片,则需要仔细检查之前的 OpenCV 安装和 QT 项目配置步骤,查看是否存在路径设置错误、库文件链接失败等问题。
七、常见问题与解决方法
在 QT 5.14.1 搭建 OpenCV 环境的过程中,可能会遇到各种各样的问题,以下是一些常见问题及其解决方法:
- 编译错误:
- “undefined reference to…”:这类错误通常是由于库文件链接不正确导致的。首先检查项目的.pro 文件中,OpenCV 库文件的路径和名称是否正确设置。确保LIBS变量中的路径与实际的 OpenCV 库文件路径一致,并且库文件名没有拼写错误。例如,如果在LIBS中写的是-opencv_world450,但实际安装的是opencv_world451,就会出现这种错误。此时,需要将LIBS中的库文件名修改为正确的版本号。
- “fatal error: opencv2/opencv.hpp: No such file or directory”:这表明编译器无法找到OpenCV 的头文件。需要检查INCLUDEPATH变量中是否正确设置了 OpenCV 头文件的路径。如果路径中存在中文、空格或者拼写错误,都可能导致编译器无法找到头文件。确保路径指向 OpenCV 安装目录下的include文件夹,并且该文件夹中包含opencv2文件夹和opencv.hpp等头文件。
- 链接错误:
- “error: file not recognized: File format not recognized”:此错误一般是因为penCV 编译文件版本和 QT 项目版本不匹配造成的。比如,如果 OpenCV 是用 64 位编译器编译的,而 QT 项目选择了 32 位编译器,就会出现这种情况。此时,需要确保 OpenCV 和 QT 项目的编译器版本一致,即如果 OpenCV 是 64 位的,QT 项目也应选择 64 位的编译器(如 “Desktop Qt 5.14.1 MinGW 64-bit”)。
- 环境变量问题:
- “程序运行时提示找不到 dll 文件”:这可能是因为没有将 OpenCV 的bin目录添加到系统环境变量中,或者添加后没有重新启动计算机使环境变量生效。解决方法是将 OpenCV 安装目录下的bin文件夹路径(例如 “D:\OpenCV\4.5.0\install\x64\mingw\bin”)添加到系统环境变量的 “Path” 变量中,然后重新启动计算机。
- “在 CMake 配置过程中出现关于 Python 路径的错误”:如果在 CMake 配置 OpenCV 时,出现与 Python 相关的错误,可能是因为 Python 的安装路径中含有中文。建议卸载ython,重新安装到一个无中文的路径下,并确保在安装过程中勾选了 “Add Python to PATH” 选项,将 Python 添加到系统环境变量中。
如果在搭建过程中遇到其他问题,可以仔细查看编译器的错误提示信息,通常这些信息会给出一些线索,帮助定位问题所在。同时,也可以在相关的技术论坛(如 Stack Overflow、CSDN 等)上搜索类似问题的解决方案,或者向同行请教,以解决遇到的困难,顺利完成 QT 5.14.1 与 OpenCV 环境的搭建,开启计算机视觉项目的开发之旅。
八、总结与展望
通过以上详细的步骤,我们成功搭建了 QT 5.14.1 与 OpenCV 的开发环境。这一过程虽然可能会遇到一些问题,但只要按照步骤仔细操作,并参考常见问题的解决方法,就能够顺利完成搭建,为后续的计算机视觉应用开发奠定坚实的基础。
随着技术的不断发展,计算机视觉在智能安防、自动驾驶、医疗影像分析、工业检测等众多领域的应用将越来越广泛和深入。掌握 QT 与 OpenCV 的开发技能,将为开发者打开一扇通向这些前沿领域的大门,创造出更多具有创新性和实用性的应用程序。希望读者能够在这个基础上,不断探索和实践,充分发挥自己的创造力,为推动计算机视觉技术的发展贡献自己的力量,在这个充满机遇和挑战的领域中取得丰硕的成果,开创属于自己的精彩篇章。
相关文章:
《QT 5.14.1 搭建 opencv 环境全攻略》
《QT 5.14.1 搭建 opencv 环境全攻略》 一、引言二、准备工作(一)软件下载(二)系统环境确认 三、安装 QT 5.14.1(一)安装包下载与运行(二)环境变量配置 四、OpenCV 安装与配置&#…...
Sentry日志管理thinkphp8 tp8 sentry9 sentry8 php8.x配置步骤, tp8自定义异常处理类使用方法
tp8的默认使用的就是composer来管理第三方包, 所以直接使用 composer 来安装 sentry9 即可. 同时tp8和tp5的配置方式不太一样, 这里我们直接使用自定义异常类来处理Sentry的异常. 1. 安装 sentry9 包 # 安装 sentry9 包 composer require "tekintian/sentry9-php" …...
MySQL 基础:开启数据库之旅
MySQL 基础:开启数据库之旅 在当今数字化的时代,数据扮演着至关重要的角色,而数据库管理系统则是存储、管理和操作这些数据的强大工具。MySQL 作为一款广受欢迎的开源关系型数据库管理系统,被广泛应用于各类网站、应用程序以及企业…...
OpenTK 中帧缓存的深度解析与应用实践
摘要: 本文深入探讨了 OpenTK 中帧缓存的使用。首先介绍了帧缓存的基本概念与在图形渲染管线中的关键地位,包括其与颜色缓存、深度缓存、模板缓存等各类缓存的关联。接着详细阐述了帧缓存对象(FBO)的创建、绑定与解绑等操作,深入分析了纹理附件、渲染缓冲区附件在 FBO 中的…...
stm32制作CAN适配器5--WinUsb上位机编写
上次我们要stm32制作了一个基于winusb有canfd适配器,今天我们来制作一个上位机程序来进行报文收发。 上位机还是用以前写好的,只是更改下dll文件。 项目链接器,输入,附加依赖项中增加winusb.lib winusb初始化:#incl…...
【时间之外】IT人求职和创业应知【71】-专利费
目录 2025 ICT产业趋势年会召开,2024年度ICT十大新闻重磅揭晓 海纳致远数字科技申请定制化插件驱动的数据分析专利 阿波罗智联取得语音数据的处理方法、装置、设备和存储介质专利 心勿贪,贵知足。 感谢所有打开这个页面的朋友。人生不如意࿰…...
springboot vue 会员营销系统
springboot vue 会员营销系统介绍 演示地址: 开源版本:http://8.146.211.120:8083/ 完整版本:http://8.146.211.120:8086/ 移动端 http://8.146.211.120:8087/ 简介 欢迎使用springboot vue会员营销系统。本项目包含会员储值卡、套餐卡、计…...
Kafka快速扫描
Architecture 系统间解耦,异步通信,削峰填谷 Topic 消息主题,用于存储消息 Partition 分区,通过扩大分区,可以提高存储量 Broker 部署Kafka服务的设备 Leader kafka主分区 Follwer kafka从分区 高性能之道:…...
scala基础学习(数据类型)-字符串
文章目录 scala中的字符串引号单引号双引号三引号 常用内置函数length 获取字符串长度charAt 字符串元素访问substring 获取字串indexOf 获取字串位置replace 字符串替换toLowerCase,toUpperCase 字符串大小写转换trim 去除首位空白符split 字符串切割以及查看startsWith,endsW…...
网络架构与IP技术:4K/IP演播室制作的关键支撑
随着科技的不断发展,广播电视行业也在不断迭代更新,其中4K/IP演播室技术的应用成了一个引人注目的焦点。4K超高清技术和IP网络技术的结合,不仅提升了节目制作的画质和效果,还为节目制作带来了更高的效率和灵活性。那么4K超高清技术…...
如何优雅的关闭GoWeb服务器
以下内容均为Let’s Go Further内容节选以及作者本人理解。 这里创建了一个后台进程用于捕获关闭信号,在后台进程中,主要内容为: 创建一个缓冲通道 quit使用signal.Notify函数监听并捕获关机信号SIGINT,SIGTERM,在捕获关机信号后…...
Python爬虫(5) --爬取网页视频
文章目录 爬虫爬取视频指定url发送请求UA伪装请求页面 获取想要的数据解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如 requ…...
simulink离散传递函数得到差分方程并用C语言实现
一. 创建连续时间的传递函数 G ( s ) s 2 217 s s 2 384 s 8989 G(s) \frac{s^2217s}{s^2384s8989} G(s)s2384s8989s2217s 二. 离散连续时间的传递函数G(s) 2.1 在matlab中用c2d函数双线性变换法离散G(s), 下面是matlab脚本代码 % 创建连续时间传递函数 …...
第十七届山东省职业院校技能大赛 中职组“网络安全”赛项任务书正式赛题
第十七届山东省职业院校技能大赛 中职组“网络安全”赛项任务书-A 目录 一、竞赛阶段 二、竞赛任务书内容 (一)拓扑图 (二)模块A 基础设施设置与安全加固(200分) (三)B模块安全事件响应/网络安全数据取证/…...
Redis内存碎片详解
什么是内存碎片? 你可以将内存碎片简单地理解为那些不可用的空闲内存。 举个例子:操作系统为你分配了 32 字节的连续内存空间,而你存储数据实际只需要使用 24 字节内存空间,那这多余出来的 8 字节内存空间如果后续没办法再被分配存储其他数…...
Python球球大作战
系列文章 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…...
机器学习(Machine Learning)的安全问题
最近看论文,看到了”对抗样本“的一些内容,然后又研究了一下其背后的东西,发现还有”机器学习的安全“这一问题,然后找了几篇博客看了一下,发现了篇2019年的比较有意思的文章,这里整理一下,方编…...
ROS1安装教程
一、环境准备 操作系统:Ubuntu 20.04 LTS 注:为保证系统干净,本文使用Docker进行 演示,如已安装相应的Ubuntu系统请忽略。 Docker安装Ubuntu系统步骤如下: # 拉取镜像 docker pull ubuntu:20.04# 创建容器 docker ru…...
大腾智能CAD:国产云原生三维设计新选择
在快速发展的工业设计领域,CAD软件已成为不可或缺的核心工具。它通过强大的建模、分析、优化等功能,不仅显著提升了设计效率与精度,还促进了设计思维的创新与拓展,为产品从概念构想到实体制造的全过程提供了强有力的技术支持。然而…...
Docker 入门:如何使用 Docker 容器化 AI 项目(一)
引言 在人工智能(AI)项目的开发和部署过程中,环境配置和依赖管理往往是开发者遇到的挑战之一。开发者通常需要在不同的机器上运行同样的代码,确保每个人使用的环境一致,才能避免 “在我的机器上可以运行”的尴尬问题。…...
【04-数据库面试】
如何创建一个新的数据库 数据库是现代信息技术中不可或缺的一部分,它为存储、检索和管理数据提供了强大的工具。无论是企业还是个人,都可能需要创建自己的数据库以满足特定的需求。本文将详细介绍创建一个新数据库的步骤,包括规划、选择数据…...
单元测试使用记录
什么是单元测试 简单来说就是对一个类中的方法进行测试,对输出的结果检查判断是否符合预期结果 但是在多年的工作中,从来没有哪个项目中真正系统的用到了单元测试,因此对它还是很陌生的,也就造成更加不会在项目中区使用它。 如何…...
《深入浅出 Servlet:Java Web 开发的基石》(二)
ServletConfig(熟练) ServletConfig对象对应web.xml文件中的<servlet>元素。例如你想获取当前Servlet在web.xml文件中的配置名,那么可以使用servletConfig.getServletName()方法获取! 你不能自己去创建ServletConfig对象,Servlet的in…...
Pytorch | 从零构建MobileNet对CIFAR10进行分类
Pytorch | 从零构建MobileNet对CIFAR10进行分类 CIFAR10数据集MobileNet设计理念网络结构技术优势应用领域 MobileNet结构代码详解结构代码代码详解DepthwiseSeparableConv 类初始化方法前向传播 forward 方法 MobileNet 类初始化方法前向传播 forward 方法 训练过程和测试结果…...
冯诺依曼架构与哈佛架构的对比与应用
冯诺依曼架构(Von Neumann Architecture),也称为 冯诺依曼模型,是由著名数学家和计算机科学家约翰冯诺依曼(John von Neumann)在1945年提出的。冯诺依曼架构为现代计算机奠定了基础,几乎所有现代…...
【Java基础面试题032】Java中的字节码是什么?
回答重点 Java字节码是Java编译器将Java源代码编译后生成的 位于Java源代码与JVM执行的执行的机器码之间。 Java字节码由JVM解释或即时编译(JIT)为机器码执行 扩展知识 Java字节码的关键点 1)字节码结构: Java字节码是与平…...
K8s ConfigMap的基础功能介绍
在 Kubernetes 中,ConfigMap 是一种用于管理配置信息的资源对象,它允许你将 配置信息与代码解耦,方便管理和更新应用配置,而无需重新构建镜像或重启服务。 ConfigMap 的功能 存储配置信息: 可以以 键值对 的形式存储配…...
stm32制作CAN适配器4--WinUsb的使用
前面使用STM32G474芯片的USB模块做了一个CANFD程序,当时用的是HID模式,在实际使用时发现HID模块的通讯速率太慢了,只能1ms传输一帧,就会造成有些掉帧现象。 现在就把HID模块改为在Window下同样免驱的WinUsb来实现CANFD数据的传输。…...
深入理解 Java 中的 ArrayList 和 List:泛型与动态数组
深入理解 Java 中的 ArrayList 和 List:泛型与动态数组 在 Java 编程中,ArrayList 和 List 是最常用的集合类之一。它们帮助我们管理动态数据,支持按索引访问、增加、删除元素等操作。尤其在使用泛型时,理解它们之间的关系及应用…...
[react 3种方法] 获取ant组件ref用ts如何定义?
获取ant的轮播图组件, 我用ts如何定义? Strongly Type useRef with ElementRef | Total TypeScript import React, { ElementRef } from react; const lunboRef useRef<ElementRef<typeof Carousel>>(null); <Carousel autoplay ref{lunboRef}> 这样就…...
VS Code Copilot 与 Cursor 对比
选手简介 VS Code Copilot:算是“老牌”编程助手了,虽然Copilot在别的编辑器上也有扩展,不过体验最好的还是VS Code,毕竟都是微软家的所以功能集成更好一些;主要提供的是Complete和Chat能力,也就是代码补全…...
华为IPD流程6大阶段370个流程活动详解_第一阶段:概念阶段 — 81个活动
华为IPD流程涵盖了产品从概念到上市的完整过程,各阶段活动明确且相互衔接。在概念启动阶段,产品经理和项目经理分析可行性,PAC评审后成立PDT。概念阶段则包括产品描述、市场定位、投资期望等内容的确定,同时组建PDT核心组并准备项目环境。团队培训涵盖团队建设、流程、业务…...
Vue3组件封装技巧与心得
摘要: 日常开发中,用Vue组件进行业务拆分,代码解耦是一个很好的选择; 今天就来分享一下我在使用Vue3进行组件封装的一些技巧和心得,希望能够帮助到大家; 1. 组件特性: 在Vue中组件是一个独立的…...
15.初识接口1 C#
这是一个用于实验接口的代码 适合初认识接口的人 【CSDN开头介绍】(文心一言AI生成) 在C#编程世界中,接口(Interface)扮演着至关重要的角色,它定义了一组方法,但不提供这些方法的实现。它要求所…...
渗透测试-前端加密分析之RSA加密登录(密钥来源本地)
本文是高级前端加解密与验签实战的第5篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过前端RSA加密来爆破登录。 分析 generateKey函数用来生成随机的RSA公私钥 加密的格式如下: {"username":"admin…...
题海拾贝:力扣 86.分隔链表
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞,关注! 1、题…...
《Mycat核心技术》第06章:Mycat问题处理总结
作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 星球项目地址:https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀,…...
前端实现图片压缩
前端实现图片压缩的主要方法有: 使用 HTML5 的 API 利用 canvas 将图片绘制到画布上,然后通过 toDataURL 方法获取压缩后的图片数据。 使用第三方库 借助 compressorjs、browser-image-compression 等开源库,快速实现高质量的图片压缩功能。…...
Python OCR 文字识别
一.引言 文字识别,也称为光学字符识别(Optical Character Recognition, OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技…...
怿星科技联合赛力斯举办workshop活动,进一步推动双方合作
12月18日,由怿星科技与赛力斯汽车联合举办的workshop活动在赛力斯五云湖总部展开,双方嘉宾围绕智能汽车发展趋势、行业前沿技术、汽车电子网络与功能测试等核心议题展开了深度对话与交流,并现场参观演示了多套前沿产品。怿星科技CEO潘凯、汽车…...
Vue.js前端框架教程1:Vue应用启动和Vue组件
文章目录 Vue 应用Vue 应用的主要组成部分:启动 Vue 应用:Vue组件基础组件组件注册父子组件组件插槽(Slots)动态组件和 `keep-alive`Vue 应用 Vue 应用由几个主要部分组成,每个部分都有其特定的角色和职责。以下是 Vue 应用的主要组成部分以及如何启动一个 Vue 应用的介绍…...
LabVIEW深海气密采水器测控系统
LabVIEW的深海气密采水器测控系统通过高性价比的硬件选择与自主开发的软件,实现了高精度的温度、盐度和深度测量,并在实际海上试验中得到了有效验证。 项目背景 深海气密采水器是进行海底科学研究的关键工具,用LabVIEW开发了一套测控系统&am…...
SpringBoot 启动类 SpringApplication 二 run方法
配置 在Program arguments配置2个参数:--server.port8081 --spring.profiles.activedev。 run方法 run方法执行结束代表SpringBoot启动完成,即完成加载bean。 // ConfigurableApplicationContext 是IOC容器 public ConfigurableApplicationContext ru…...
【java基础系列】实现一个简单的猜数字小游戏
主要是用的java中的键盘录入和随机数两个api,实现这种人机交互的小游戏,可以用来锻炼基础算法思维 实现效果 实现代码 package com.gaofeng.day10;import java.util.Random; import java.util.Scanner;/*** author gaofeng* date 2024-12-22 - 9:21*/ …...
Liveweb视频融合共享平台在果园农场等项目中的视频监控系统搭建方案
一、背景介绍 在我国的大江南北遍布着各种各样的果园,针对这些地处偏僻的果园及农场等环境,较为传统的安全防范方式是建立围墙,但是仅靠围墙仍然无法阻挡不法分子的有意入侵和破坏,因此为了及时发现和处理一些难以察觉的问题&…...
clickhouse-题库
1、clickhouse介绍以及架构 clickhouse一个分布式列式存储数据库,主要用于在线分析查询 2、列式存储和行式存储有什么区别? 行式存储: 1)、数据是按行存储的 2)、没有建立索引的查询消耗很大的IO 3)、建…...
kafka常用命令
安装kafka注意事项 修改 、vim kafka/config/server.properties 三个地方①brokerId ②logs地址③指定节点 一、创建主题 (必须指定分区,指定副本) #在kafka bin目录下执行以下命令 #①连接hadoop01 创建主题为TEST 分区1 副本3个 bin/ka…...
在 Django 中使用 SMTP 发送邮件是一个常见的需求
在 Django 中使用 SMTP 发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等。下面是一个简单的示例,展示了如何在 Django 中配置 SMTP 发送邮件,并创建一个包含表单、路由和视图的界面来发送邮件。 1. 配置 Django 项目…...
JS中的原型与原型链
1. 基本概念 原型(Prototype):每个对象都有一个内部属性 [[Prototype]],通常通过 __proto__ 访问(非标准,但广泛支持)。 原型链(Prototype Chain):对象通过原…...
STM32F407 | Embedded IDE01 - vscode搭建Embedded IDE开发环境(支持JLINK、STLINK、DAPLINK)
导言 Embedded IDE官网:https://em-ide.com/docs/intro 我猜肯定有部分人使用SI Keil开发STM32项目,也有vscode Keil开发STM32程序。SI或vscode编写代码,然后切换Keil编译、下载、调试程序。有一段时间,我也是这么干的。但是,程…...