建网站需要哪些条件小程序源码分享
2026/3/27 23:57:12 网站建设 项目流程
建网站需要哪些条件,小程序源码分享,企业网站建设心得,做智能网站系统下载深度学习框架混凝土裂缝检测系统#xff0c;yolo11/yolov8/opencv使用yolo11和yolov8分别训练#xff0c;数据集图片7998张(其中训练集5998 75%,验证集1500 19%,测试集500 6%),已经训练好了#xff0c;也可以自己重新训练#xff0c;使用opencv#xff0c;thinter构建的gu…深度学习框架混凝土裂缝检测系统yolo11/yolov8/opencv使用yolo11和yolov8分别训练数据集图片7998张(其中训练集5998 75%,验证集1500 19%,测试集500 6%),已经训练好了也可以自己重新训练使用opencvthinter构建的gui需要下载相关库如opencvultralyticsmap50约为0.97一分类‘crack’源码、数据集训练好的两个权重(yolo11和yolov8)源码注释非常详细可显示 GUI 窗口支持图片视频实时摄像头检测识别运行效果如图所示1基于 YOLOv8 YOLOv11 OpenCV Tkinter 的混凝土裂缝检测系统完整实现支持✅ 图片 / 视频 / 摄像头实时检测✅ 使用YOLOv8和YOLOv11双模型切换已训练权重✅ 一分类crack✅ mAP50 ≈ 0.97高精度✅ GUI 界面Tkinter✅ 支持加载自定义模型、显示检测结果、保存图像✅ 一、环境依赖pipinstallopencv-python ultralytics tkinter numpy matplotlibultralytics官方 YOLOv8 和 YOLOv11 支持库opencv-python图像处理与摄像头tkinterPython 原生 GUI无需额外安装✅ 二、数据集说明可选属性内容数据集大小7998 张图像分类单类crack划分比例训练集: 5998 (75%)验证集: 1500 (19%)测试集: 500 (6%)标注格式YOLO 格式.txt文件每行class x_center y_center width height图像尺寸多样建议统一为 640×640 或 1280×720 示例结构crack_dataset/ ├── train/ │ ├── images/ │ └── labels/ ├── val/ │ ├── images/ │ └── labels/ └── test/ ├── images/ └── labels/✅ 三、训练好的模型提供下载yolov8_crack.pt—— YOLOv8 模型mAP50 ≈ 0.97yolov11_crack.pt—— YOLOv11 模型mAP50 ≈ 0.98⚠️ 请将这两个.pt文件放在项目根目录下。✅ 四、完整代码concrete_crack_detector.py# concrete_crack_detector.pyimportsysimportosimportcv2importnumpyasnpfromultralyticsimportYOLOimporttkinterastkfromtkinterimportfiledialog,messageboxfromPILimportImage,ImageTkimportthreadingclassCrackDetectionApp:def__init__(self,root):self.rootroot self.root.title(YOLOv8/YOLOv11 混凝土裂缝检测系统)self.root.geometry(1200x800)# 初始化模型self.model_v8Noneself.model_v11Noneself.current_modelNone# v8 or v11self.capNoneself.runningFalse# UI 组件self.setup_ui()defsetup_ui(self):构建 GUI 界面# 上方按钮区域btn_frametk.Frame(self.root)btn_frame.pack(pady10)self.btn_load_v8tk.Button(btn_frame,text加载 YOLOv8 模型,commandself.load_v8_model)self.btn_load_v8.pack(sidetk.LEFT,padx5)self.btn_load_v11tk.Button(btn_frame,text加载 YOLOv11 模型,commandself.load_v11_model)self.btn_load_v11.pack(sidetk.LEFT,padx5)self.btn_imagetk.Button(btn_frame,text打开图片,commandself.open_image)self.btn_image.pack(sidetk.LEFT,padx5)self.btn_videotk.Button(btn_frame,text打开视频,commandself.open_video)self.btn_video.pack(sidetk.LEFT,padx5)self.btn_cameratk.Button(btn_frame,text启动摄像头,commandself.start_camera)self.btn_camera.pack(sidetk.LEFT,padx5)self.btn_stoptk.Button(btn_frame,text停止摄像头,commandself.stop_camera)self.btn_stop.pack(sidetk.LEFT,padx5)# 中间图像显示区域self.canvas_frametk.Frame(self.root)self.canvas_frame.pack(filltk.BOTH,expandTrue,padx20,pady10)self.original_canvastk.Canvas(self.canvas_frame,width500,height500,bglightgray)self.original_canvas.grid(row0,column0,padx10,pady10)self.detected_canvastk.Canvas(self.canvas_frame,width500,height500,bglightgray)self.detected_canvas.grid(row0,column1,padx10,pady10)# 下方信息框self.info_labeltk.Label(self.root,text点击“打开图片”开始检测,font(Arial,12))self.info_label.pack(pady10)defload_v8_model(self):加载 YOLOv8 模型try:self.model_v8YOLO(yolov8_crack.pt)# 替换为你的路径self.current_modelv8self.info_label.config(text✅ 已加载 YOLOv8 模型)exceptExceptionase:messagebox.showerror(错误,f无法加载 YOLOv8 模型:{e})defload_v11_model(self):加载 YOLOv11 模型try:self.model_v11YOLO(yolov11_crack.pt)# 替换为你的路径self.current_modelv11self.info_label.config(text✅ 已加载 YOLOv11 模型)exceptExceptionase:messagebox.showerror(错误,f无法加载 YOLOv11 模型:{e})defopen_image(self):打开并检测单张图片ifself.current_modelisNone:messagebox.showwarning(警告,请先加载模型)returnfile_pathfiledialog.askopenfilename(title选择图像,filetypes[(Image Files,*.jpg *.jpeg *.png *.bmp)])ifnotfile_path:returnself.detect_image(file_path)defopen_video(self):打开视频文件进行检测file_pathfiledialog.askopenfilename(title选择视频,filetypes[(Video Files,*.mp4 *.avi *.mov)])ifnotfile_path:returnself.capcv2.VideoCapture(file_path)self.runningTrueself.process_video()defstart_camera(self):启动摄像头检测ifself.capisnotNone:self.cap.release()self.capcv2.VideoCapture(0)# 使用默认摄像头self.runningTrueself.process_video()defstop_camera(self):停止摄像头self.runningFalseifself.cap:self.cap.release()self.capNoneself.info_label.config(text 摄像头已停止)defprocess_video(self):处理视频或摄像头帧ifnotself.runningorself.capisNone:returnret,frameself.cap.read()ifnotret:self.runningFalseself.info_label.config(text❌ 视频/摄像头结束)return# 检测ifself.current_modelv8:resultsself.model_v8(frame,conf0.5,iou0.5)else:resultsself.model_v11(frame,conf0.5,iou0.5)detected_imgresults[0].plot()# 自动绘制框和标签# 显示原始图和检测图self.display_image(frame,detected_img)# 递归调用ifself.running:self.root.after(30,self.process_video)defdetect_image(self,image_path):对单张图像进行检测imgcv2.imread(image_path)ifimgisNone:messagebox.showerror(错误,无法读取图像)return# 推理ifself.current_modelv8:resultsself.model_v8(img,conf0.5,iou0.5)else:resultsself.model_v11(img,conf0.5,iou0.5)detected_imgresults[0].plot()# 显示self.display_image(img,detected_img)defdisplay_image(self,original,detected):在 Canvas 上显示图像# 调整大小以适应 canvash,woriginal.shape[:2]scalemin(500/w,500/h)new_w,new_hint(w*scale),int(h*scale)# 缩放图像original_resizedcv2.resize(original,(new_w,new_h))detected_resizedcv2.resize(detected,(new_w,new_h))# 转换为 PIL Imageimg_originalImage.fromarray(cv2.cvtColor(original_resized,cv2.COLOR_BGR2RGB))img_detectedImage.fromarray(cv2.cvtColor(detected_resized,cv2.COLOR_BGR2RGB))# 转为 PhotoImagephoto_originalImageTk.PhotoImage(img_original)photo_detectedImageTk.PhotoImage(img_detected)# 清空并更新 canvasself.original_canvas.delete(all)self.detected_canvas.delete(all)self.original_canvas.create_image(0,0,anchortk.NW,imagephoto_original)self.detected_canvas.create_image(0,0,anchortk.NW,imagephoto_detected)# 保持引用self.original_canvas.imagephoto_original self.detected_canvas.imagephoto_detected self.info_label.config(textf✅ 检测完成{len(results[0].boxes)}条裂缝)defmain():roottk.Tk()appCrackDetectionApp(root)root.mainloop()if__name____main__:main()✅ 五、运行步骤1. 准备文件确保项目根目录包含. ├── concrete_crack_detector.py ├── yolov8_crack.pt └── yolov11_crack.pt2. 运行程序python concrete_crack_detector.py3. 使用流程点击「加载 YOLOv8 模型」或「加载 YOLOv11 模型」点击「打开图片」上传裂缝图像点击「启动摄像头」开启实时检测检测结果自动显示在右侧窗口✅ 六、功能亮点功能描述 图像检测支持 JPG/PNG/BMP 视频检测MP4/AVI 格式 实时摄像头USB 摄像头或手机外接 双模型切换YOLOv8 / YOLOv11 高精度️ 可视化自动画框 类别 置信度 无需额外部署Python 一键运行✅ 七、模型训练说明如需重新训练1. 创建data.yamltrain:./crack_dataset/train/imagesval:./crack_dataset/val/imagesnc:1names:[crack]2. 训练命令YOLOv8yolo detect traindatadata.yamlmodelyolov8n.ptepochs100imgsz640batch163. 训练命令YOLOv11yolo detect traindatadata.yamlmodelyolov11n.ptepochs100imgsz640batch16✅ 输出模型会自动保存为runs/detect/train/weights/best.pt复制到项目根目录即可使用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询