Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 80 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
80
Dung lượng
10,01 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHĨA LUẬN TỐT NGHIỆP NGÀNH CÔNG NGHỀ KỸ THUẠT ĐIỆN - ĐIỆN TỬ THIẾT KẾ THI CƠNG MƠ HÌNH PHÂN LOẠI TRÁI CÂY THEO MÀU SẮC GVHD: TS NGUYỄN THỊ LƯỠNG SVTH: CAO HỒNG ANH KHA SKL009892 Tp Hồ Chí Minh, tháng 12/2022 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ THI CƠNG MƠ HÌNH PHÂN LOẠI TRÁI CÂY THEO MÀU SẮC SVTH : MSSV : Khố : Ngành : GVHD: CAO HỒNG ANH KHA 18142128 2018 CÔNG NGHỆ KỸ THUẬT ĐIỆN-ĐIỆN TỬ TS NGUYỄN THỊ LƯỠNG Tp Hồ Chí Minh, tháng 12 năm 2022 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ và tên Sinh viên: Cao Hoàng Anh Kha MSSV: 18142128 Ngành: Công nghệ Kỹ thuật Điện-Điện tử Tên đề tài: THIẾT KẾ - THI CƠNG MƠ HÌNH PHÂN LOẠI TRÁI CÂY THEO MÀU SẮC Họ và tên Giáo viên hướng dẫn: NHẬN XÉT: Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Ý kiến khác: Điểm:……………….(Bằng chữ: .) Tp Hồ Chí Minh, ngày tháng Giáo viên hướng dẫn (Ký & ghi rõ họ tên) năm 2022 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ và tên Sinh viên: Cao Hoàng Anh Kha MSSV: 18142128 Ngành: Công nghệ Kỹ thuật Điện-Điện tử Tên đề tài: THIẾT KẾ - THI CƠNG MƠ HÌNH PHÂN LOẠI TRÁI CÂY THEO MÀU SẮC Họ và tên Giáo viên phản biện: NHẬN XÉT: Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Ý kiến khác: Điểm:……………….(Bằng chữ: .) Tp Hồ Chí Minh, ngày tháng Giáo viên phản biện (Ký & ghi rõ họ tên) năm 2022 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** Tp Hồ Chí Minh, ngày tháng 12 năm 2022 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ và tên sinh viên: Cao Hoàng Anh Kha MSSV: 18142128 Ngành: CNKT Điện-Điện tử Lớp: 18142CL1A Giảng viên hướng dẫn: TS.Nguyễn Thị Lưỡng ĐT: 0903686917 Ngày nhận đề tài: 24/09/2022 Ngày nộp đề tài: 28/12/2022 Tên đề tài: THIẾT KẾ -THI CƠNG MƠ HÌNH PHÂN LOẠI TRÁI CÂY THEO MÀU SẮC Các số liệu, tài liệu ban đầu: + Tìm hiểu, tham khảo nhà máy và ứng dụng mơ hình thực tế + Tìm hiểu, tham khảo phương pháp truyền tải liệu, phương pháp nhận dạng và điều khiển + Tìm hiểu, tham khảo phương pháp quản lý và giám sát dây chuyền phân loại thực tế Nội dung thực đề tài: + Thiết kế mơ hình băng tải phân loại trái với hình dạng và màu sắc khác Hệ thống nhận dạng trái sử dụng camera Pi để quan sát gửi liệu kit Raspberry Pi, Raspberry truyền liệu cho Arduino Uno qua cổng UART để xử lý đưa kết phân loại Hệ thống băng chuyền có cảm biến và cấu chấp hành để phân loại loại trái vào vị trí tương ứng + Hoàn thành báo cáo đồ án đảm bảo quy trình và tiến độ Sản phẩm: Mơ hình hệ thống phân loại trái theo màu sắc TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN i LỜI CẢM ƠN Lời đầu tiên nhóm nhóm xin chân thành gửi lời cảm ơn đến cô TS.Nguyễn Thị Lưỡng tận tình hướng dẫn , hỗ trợ nhóm trang thiết bị ,truyền đạt kiến thức, kinh nghiệm cho nhóm suốt thời gian thực đồ án tốt nghiệp này Nhóm xin gửi lời chân thành cảm ơn thầy cô Khoa Điện - Điện tử truyền đạt kiến thức bổ ích cho nhóm để làm sở cho việc thực đề tài tốt nghiệp này Tiếp theo nhóm xin cảm ơn tới anh, chị khoá bạn sinh viên tạo điều kiện giúp đỡ, từ tài liệu liên quan tới đề tài góp ý bổ ích, thắc mắc mà nhóm chưa hiểu nhờ hoàn thiện đề tài Mặc dù nhóm cố gắng hoàn thành tốt đề tài này cách hoàn chỉnh nhất, tránh sai sót định việc nghiên cứu, tiếp cận thực tế, hạn chế kiến thức lẫn thời gian thực Rất mong nhận sự góp ý quý thầy cô và bạn để tài này hoàn chỉnh Xin chân thành cảm ơn! Sinh viên Cao Hoàng Anh Kha ii MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC HÌNH ẢNH v DANH MỤC BẢNG viii CHƯƠNG 1:TỔNG QUAN 1.1.ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 PHƯƠNG PHÁP NGHIÊN CỨU 1.5 GIỚI HẠN ĐỀ TÀI 1.6 NỘI DUNG ĐỀ TÀI CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 TỔNG QUAN VỀ XỬ LÝ ẢNH 2.1.1.Tổng quan xử lý ảnh 2.2 PHƯƠNG PHÁP PHÂN LOẠI SỬ DỤNG MẠNG NƠ-RON TÍCH CHẬP 2.2.1 Giới thiệu Trí tuệ nhân tạo 2.2.2 Mạng phát đối tượng Object Detection 2.2.3 Mơ hình YOLO tốn Real-time Object Detection 2.2.4 Ngôn ngữ Python thư viện OpenCV 2.2.5 Giới thiệu Colaboratory 10 2.2.6 Tập liệu huấn luyện 10 2.3.7 Phương pháp phân loại 11 2.3.GIỚI THIỆU RASPBERRY PI MODEL B+ 11 2.4 GIỚI THIỆU VỀ CAMERA MODULE 13 2.5 GIỚI THIỆU VỀ ADRUINO UNO R3 13 2.6 GIỚI THIỆU VỀ CẢM BIẾN HỒNG NGOẠI E18-D80NK 17 2.7 GIỚI THIỆU VỀ ĐỘNG CƠ DC 18 2.8 GIỚI THIỆU VỀ HỆ THỐNG BĂNG TẢI 19 2.9 GIỚI THIỆU VỀ ĐỘNG CƠ SERVO MG995 20 2.10 GIỚI THIỆU VỀ LCD 16X2 22 iii 2.11 ĐÈN LED HẮT 5054 24 2.12 CÁC CHUẨN GIAO TIẾP 25 2.12.1 Chuẩn giao tiếp UART 25 2.12.2 Chuẩn giao tiếp I2C 27 CHƯƠNG : TÍNH TOÁN VÀ THIẾT KẾ 30 3.1.GIỚI THIỆU 30 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 30 3.2.1 Thiết kế sơ đồ khối hệ thống 30 3.2.2 Sơ đồ kết nối hệ thống 31 3.2.3 Sơ đồ kết nối toàn mạch 38 3.3 CHUẨN BỊ PHẦN CỨNG VÀ KẾT NỐI: 39 3.3.1 Chuẩn bị phần cứng 39 3.3.2 Kết nối phần module điều khiển: 40 3.4 LẬP TRÌNH HỆ THỐNG 41 3.4.1 Lưu đồ hoạt động phận thu hình ảnh 41 3.4.2 Lưu đồ giải thuật hệ thống 42 3.5 HƯỚNG DẪN SỬ DỤNG THAO TÁC TRÊN RASPBERRY 43 CHƯƠNG 4: KẾT QUẢ 46 4.1 KẾT QUẢ TỔNG QUAN: 46 4.2 KẾT QUẢ PHẦN CỨNG : 46 48 4.3.KẾT QUẢ THỰC NGHIỆM 51 4.3.1.Kết tổng quan thực nghiệm 51 4.3.2.Kết mở rộng 53 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 55 5.1 KẾT LUẬN 55 5.2 HƯỚNG PHÁT TRIỂN: 55 TÀI LIỆU THAM KHẢO 56 PHỤ LỤC 57 iv DANH MỤC HÌNH ẢNH Hình Trang Hình Giới thiệu xử lý ảnh Hình 2 Các bước xử lý ảnh Hình Tổng quan trí tuệ nhân tạo Hình Các bước thực phân loại đối tượng Hình Phát vật thể ảnh Hình Sơ đồ kiến trúc mạng YOLO Hình Khái qt mơ hình YOLO Hình Sơ đồ kiến trúc mạng YOLOv4 Hình Một số hình ảnh tập liệu 11 Hình 10 Raspberry Pi model B+ 11 Hình 11 Sơ đồ cấu hình Raspberry Pi model B+ 12 Hình 12 Module Camera Pi MP 13 Hình 13 Adruino Uno R3 15 Hình 14 Cảm biến hồng ngoại D18 - D80NK 17 Hình 15 Sơ đồ chân E18 – D80NK 18 Hình 16 Động DC và động băng tải 18 Hình 17 Động giảm tốc TG-85C-KU-75-KA 19 Hình 18 Mơ hình băng tải 19 Hình 19 Động Servo 20 Hình 20 Cấu tạo động ( motor) servo 21 Hình 21 Động Servo MG995 21 Hình 22 Sơ đồ nối dây Servo 22 Hình 23 LCD 16x2 22 Hình 24 Cấu tạo LCD 16x2 23 Hình 25 Đèn led hắt 5054 để ổn định nguồn sáng 25 Hình 26 Giao tiếp UART 25 Hình 27 Truyền thông UART 26 Hình 28 Giao tiếp UART 27 v Hình 29 Giao tiếp I2C 27 Hình 30 Dữ liệu I2C 29 Hình Sơ đồ khối hệ thống 30 Hình Sơ đồ cổng ngoại vi 31 Hình 3 Sơ đồ kết nối Raspberry Pi 32 Hình Sơ đồ kết nối Adruino với Raspberry Pi 33 Hình Giao tiếp UART Raspberry Pi Adruino Uno 34 Hình Sơ đồ kết nối Camera 34 Hình Giao tiếp I2C LCD 16x2 với Adruino 35 Hình Kết nối Adruino Uno và động DC 35 Hình Kết nối Adruino với động Servo 36 Hình 10 Kết nối cảm biến hồng ngoại Adruino Uno 36 Hình 11 Adapter 5VDC-3A 36 Hình 12 Mạch Buck DC-DC XL4015 37 Hình 13 Nguồn tổ ong 24VDC – 5A 37 Hình 14 Sơ đồ nguyên lý mạch 38 Hình 15 Sơ đồ kết nối toàn mạch 38 Hình 16 Lưu đồ hoạt động Camera 41 Hình 17 Lưu đồ giải thuật hệ thống 42 Hình 18 Tìm địa IP Raspberry Pi bằng phần mềm IP Scanner 43 Hình 19 Kết nối Raspberry Pi với PC qua phần mềm VNC Viewwer 44 Hình 20 Giao diện Raspbian 44 Hình 21 Mở chương trình điều khiển nhấn run để chạy chương trình 45 Hình 22 Khởi chạy file bằng cửa sổ Terminal 45 Hình Động DC và trục quay băng tải 46 Hình Sơ đồ bố trí buồng chụp ảnh (nhìn từ mặt bên) 47 Hình Bộ phận thu hình ảnh 47 Hình 4 Buồng chụp ảnh nhìn từ bên 48 Hình Cánh tay Servo 48 Hình Hình ảnh phận phân loại 48 vi Hình 16 Hình ảnh phận dạng chuối chín chuối xanh khung hình Hình 17 Hình ảnh nhận dạng chuối xanh táo đỏ khung hình Đánh giá: Ta nhận dạng nhiều trái huấn luyện tập liệu lúc khung hình Tuy nhiên khung ảnh chụp camera giới hạn hẹp và phần cấu đẩy Adruino lập trình phân loại tuần tự trái nên chưa thể phát triển thêm 54 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 KẾT LUẬN Sau tháng thực đồ án với sự hướng dẫn và giúp đỡ TS Nguyễn Thị Lưỡng, nhóm hoàn thành đề tài “Thiết kế - thi công mô hình phân loại trái theo màu sắc” Mơ hình hệ thống đáp ứng tiêu đặt ban đầu, chi phí khơng q cao, mơ hình phần cứng hoạt động tốt, thiết bị nhỏ gọn, lắp đặt dễ dàng, thuận tiện cho việc học tập và phát triển thành dây chuyền sản xuất Nhận dạng tốt hầu hết loại trái tập liệu, có đếm sản phẩm Áp dụng thành cơng mơ hình học sâu YOLOv4 bằng Raspberry với ngôn ngữ Python và thư viện OpenCV Phần nhận dạng với độ chính xác cao thay đổi thơng số liệu từ xa từ máy tính khác có kết nối Internet thông qua phần mềm VNC Viewer mà không cần thay đổi phần cứng Tuy nhiên, có mặt hạn chế định : Hệ thống hoạt động chậm phần phần cứng Raspberry ít tốc độ xử lý Camera chưa đủ nhanh Thu nhận và phân loại trái Chưa có giao diện để điều khiển và giám sát hiển thị số lượng màn hình LCD 16x2 Hệ thống buồng ảnh chưa đáp ứng ánh sáng tốt 5.2 HƯỚNG PHÁT TRIỂN: Đề tài “Thiết kế - thi cơng mơ hình phân loại trái theo màu sắc” nhóm cịn tồn nhiều điểm hạn chế, cần phát triển để dự án này áp dụng hiểu ngành sản xuất nông sản như: Tăng tốc độ làm việc và xử lý hệ thống Để đưa vào sản xuất đảm bảo cho hệ thống cách liên tục camera nhận dạng xử lý mà không cần phải dừng hay giảm tốc độ băng tải Hệ thống nhận dạng nhiều trái lúc khung hình Mở rộng phạm vi phân loại mơ hình lên số lượng trái, chủng loại, độ màu sắc chín trái cây, cân nặng và tình trạng trái đó( mức độ chín hay trái bị sâu, thối, dập) Phát triển thêm chức vận hành và giám sát từ xa qua websever Do thời gian, kinh tế và kiến thức cịn hạn hẹp nên khơng thể tránh khỏi thiếu sót q trình thực đề tài Rất mong nhận góp ý, đánh giá quý báu quý thầy cô và người 55 TÀI LIỆU THAM KHẢO [1] “ Raspberry Pi Documentation” [Online] Available: https://www.raspberrypi.com/documentation/computers/gettingstarted.html#configuratio n-on-first-boot [2] Võ Thanh Duy - Trần Quốc Dưỡng, “Ứng dụng xử lý ảnh vào thiết kế và thi cơng mơ hình phân loại trái cây”, Đồ án tốt nghiệp , trường ĐHSPKT, Tp.HCM, 2020 https://thuvienso.hcmute.edu.vn/document/mobilepdffullndun/id/641378/hash/5d1fe03d3 38b09dc8403a6c0c604eb83 [3] Nguyễn Đức Hoà – Nguyễn Ngọc Phát, “Thiết kế - thi công hệ thống phân loại trái dùng mạng Neural”, Đồ án tốt nghiệp , trường ĐHSPKT, Tp.HCM,2020 https://thuvienso.hcmute.edu.vn/document/mobilepdffullndun/id/641379/hash/8fbafd11a 37ad53e71d5beba1230a98a [4] Nguyễn Hiển Minh – Phan Thanh Phong, “Ứng dụng xử lý ảnh hệ thống phân loại sản phẩm”, Đồ án tốt nghiệp, trường ĐHSPKT, Tp.HCM, 2019 https://www.slideshare.net/trongthuy3/luan-van-ung-dung-xu-li-anh-trong-he-thongphan-loai-san-pham [5] Phan Hoàng Bửu – Phan Văn Thành – Nguyễn Gia Quốc Triển “ Ứng dụng xử lý ảnh phân loại trái sử dụng Raspberry và Adruino”, Đồ án tốt nghiệp, trường ĐHSPKT Đà Nẵng, 2022 http://data.ute.udn.vn/bitstream/UTE/2148/1/DATN_DeTaiUngDungXuLyAnhTrongPha nLoaiTraiCaySuDungRaspberryVaArduino.pdf [6] “Sự khác biệt AI, Machine Learning và Deep Learning” [Online] Available: https://thuthuat.hourofcode.vn/su-khac-biet-giua-ai-machine-learning-va-deep-learning-2/ [7] “Fruit detection with YOLOv4” [Online] Available: https://github.com/EricKiennemann/Fruit-Detection-with-Yolov4 [8] “YOLO You Only Look Once” [Online] Available: https://phamdinhkhanh.github.io/2020/03/09/DarknetAlgorithm.html [9] “Tổng quan Raspberry pi model B+” [Online] Available: https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/ [10] “Công nghệ xử lý ảnh tang Raspberry” [Online] Available: http://doantotnghiep.vn/tang-raspberry-cho-he-thong-phan-loai-san-pham-theo-mau-sac [11] “How to training YOLOv4” [Online] Available: https://blog.roboflow.com/training-yolov4-on-a-custom-dataset/ 56 PHỤ LỤC Code Adruino #include #include LiquidCrystal_I2C lcd(0x3F,16,2); #include unsigned long time1 = 0; unsigned long time2 = 0; unsigned long thoigian; int CB_1=2; int CB_2=3; int CB_3=4; int st =5; int sp =6; int CB_btai=7; int CB_4=8; int servo_1=9; int servo_2=10; int servo_3=11; int gt_CB_1=1; int gt_CB_2=1; int gt_CB_3=1; int gt_CB_4=1; int tt_start=1; int tt_stop=1; int status_ht=1; Servo myServo1; Servo myServo2; 57 Servo myServo3; int taodo=0; int chuoixanh=0; int chuoichin=0; int taoxanh=0; int a=0; int b=0; int c=0; int d=0; int e; int f; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(CB_1,INPUT_PULLUP); pinMode(CB_2,INPUT_PULLUP); pinMode(CB_3,INPUT_PULLUP); myServo1.attach(servo_1); myServo2.attach(servo_2); myServo3.attach(servo_3); pinMode(st,INPUT_PULLUP); pinMode(sp,INPUT_PULLUP); pinMode(CB_btai,OUTPUT); lcd.begin(); lcd.backlight(); } void loop() { //Serial.print("Trang thai nut Start:\n"); //Serial.println(tt_start); 58 //Serial.print("Trang thai nut Stop:\n"); //Serial.println(tt_stop); //Serial.print("Trang thai hthong:\n"); //Serial.println(status_ht); //Serial.print("Trang thai cam bien so 4:\n"); //Serial.println(gt_CB_4); //Serial.print("Time:\n"); Serial.println(thoigian); //delay(200); gt_CB_1=digitalRead(CB_1); gt_CB_2=digitalRead(CB_2); gt_CB_3=digitalRead(CB_3); tt_start=digitalRead(st); tt_stop=digitalRead(sp); gt_CB_4=digitalRead(CB_4); delay(200); myServo1.write(0); myServo2.write(0); myServo3.write(0); if(Serial.available()) { String data=Serial.readStringUntil('\n'); Serial.println(data); delay(200); if( data=="taoxanh") { a=1; taoxanh++; } 59 else if (data=="taodo") { b=1; taodo++; } else if (data="chuoixanh") { c=1; chuoixanh++; } else if (data="chuoichin") { chuoichin++; d=1; } } if(tt_start==0) { status_ht=0; } if(tt_stop==0) { status_ht=1; chuoichin=0; chuoixanh=0; taodo=0; taoxanh=0; } if(status_ht==0) { 60 lcd.clear(); lcd.setCursor(0,0); lcd.print("txanh:"); lcd.setCursor(6,0); lcd.print(taoxanh); lcd.setCursor(8,0); lcd.print("taodo:"); lcd.setCursor(14,0); lcd.print(taodo); lcd.setCursor(0,1); lcd.print("cxanh:"); lcd.setCursor(6,1); lcd.print(chuoixanh); lcd.setCursor(8,1); lcd.print("cchin:"); lcd.setCursor(14,1); lcd.print(chuoichin); digitalWrite(CB_btai,HIGH); if(gt_CB_4==0) { e=1; time1=millis(); time2=millis(); } if (e==1) { thoigian=millis(); if((thoigian - time1) >=500) { time1= millis(); 61 f=1; } if (f==1) { digitalWrite(CB_btai,LOW); if((thoigian - time2) >=2500) { e=0; f=0; } } } if((gt_CB_1==0) && (c==1)) { myServo1.write(45); c=0; } else { myServo1.write(0); } if((gt_CB_2==0) && (b==1)) { myServo2.write(45); b=0; } else { myServo2.write(0); } 62 if((gt_CB_3==0) && (a==1)) { myServo3.write(45); a=0; } else { myServo3.write(0); } } else { digitalWrite(CB_btai,LOW); gt_CB_1=1; gt_CB_2=1; gt_CB_3=1; gt_CB_4=1; lcd.clear(); lcd.setCursor(0,0); lcd.print("DO AN TOT NGHIEP"); lcd.setCursor(5,1); lcd.print("HCMUTE"); } } 63 Code Raspberry: import cv2 import time import serial Conf_threshold = 0.7 NMS_threshold = 0.4 COLORS = [(0, 255, 0), (0, 0, 255), (255, 0, 0), (255, 255, 0), (255, 0, 255), (0, 255, 255)] class_name = [] with open('/home/pi/YOLOV4_fastapi/classes.txt', 'r') as f: class_name = [cname.strip() for cname in f.readlines()] #print(class_name) class Detection(): def init (self): self.net = cv2.dnn.readNetFromDarknet('/home/pi/YOLOV4_fastapi/yolov4tiny.cfg', '/home/pi/YOLOV4_fastapi/yolov4-tiny_final.weights') self.model = cv2.dnn_DetectionModel(self.net) self.model.setInputParams(size=(416, 416), scale=1/255.0, swapRB=True) self.count=0 self.count_taodo=0 self.count_taoxanh=0 self.count_chuoixanh=0 self.count_chuoichin=0 self.sr = serial.Serial("/dev/ttyACM0",9600) self.sr.flushInput() print("Starting Serial") def detect(self,frame): classes, scores, boxes = self.model.detect(frame, Conf_threshold, NMS_threshold) 64 if len(boxes)>0: for (classid, score, box) in zip(classes, scores, boxes): color = COLORS[int(classid) % len(COLORS)] label = "".format(class_name[int(classid)]) msg=class_name[classid[0]]+"\n" print(msg) print(score) cv2.rectangle(frame, box, color, 1) cv2.putText(frame, label, (box[0], box[1]-10), cv2.FONT_HERSHEY_COMPLEX, 0.3, color, 1) if int(classid)==0: self.count_chuoichin+=1 self.sr.write("chuoichin\n".encode()) elif int(classid)==1: self.count_chuoixanh+=1 self.sr.write("chuoixanh\n".encode()) elif int(classid)==2: self.count_taodo+=1 self.sr.write("taodo\n".encode()) elif int(classid)==3: self.count_taoxanh+=1 self.sr.write("taoxanh\n".encode()) with open("taodo.txt","a") as f : f.write(str(self.count_chuoixanh)+"\t"+str(self.count_taodo)+"\t"+str(self.count_chuoichi n)+"\t"+str(self.count_taoxanh)+"\n") return classes 65 Code Camera: import cv2 from base_camera import BaseCamera import sys sys.path.append(" ") from yolov4 import * class Camera(BaseCamera): def init (self): super(). init () def frames(self): camera = cv2.VideoCapture('/dev/video0', cv2.CAP_V4L) model=Detection() if not camera.isOpened(): raise RuntimeError('Could not start camera.') count=0 while True: # read current frame _, frame = camera.read() count+=1 frame=cv2.resize(frame,(640,480)) # Them count vao day if count%15==0: classes=model.detect(frame) print(classes) yield frame if name ==" main ": Cam=Camera() while True : 66 frame=Cam.get_frame() cv2.imshow("camera",frame) if cv2.waitKey(1) & 0xff==ord('q'): break 67 S K L 0