Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
1,65 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VŨ KHÁNH PHAN Nghiên cứu phương pháp đọc hiệu chuẩn thước vạch MIA Chuyên ngành : KỸ THUẬT CƠ KHÍ LUẬN VĂN THẠC SĨ KHOA HỌC KỸ THUẬT CƠ KHÍ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN THỊ KIM CÚC Hà Nội – 2022 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ Nghiên cứu phương pháp đọc hiệu chuẩn thước vạch MIA Vũ Khánh Phan Phan.VK202163M@sis.hust.edu.vn Ngành Kỹ thuật Cơ khí Giảng viên hướng dẫn: TS Nguyễn Thị Kim Cúc Viện: Cơ khí HÀ NỘI, 09/2022 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ Họ tên tác giả luận văn: Vũ Khánh Phan Đề tài luận văn: Nghiên cứu phương pháp đọc hiệu chuẩn thước vạch MIA Chuyên ngành: Kỹ thuật khí Mã số SV: 20202163M Tác giả, Người hướng dẫn khoa học Hội đồng chấm luận văn xác nhận tác giả sửa chữa, bổ sung luận văn theo biên họp Hội đồng ngày 29/10/2022 với nội dung sau: Việt hóa hình ảnh bảng biểu luận văn Chỉnh sửa lại công thức 4.6, 4.7, 4.12, 4.15 Bổ sung trích dẫn hình ảnh bảng biểu Ngày 28 tháng 11 năm 2022 Giáo viên hướng dẫn Tác giả luận văn CHỦ TỊCH HỘI ĐỒNG Mẫu 1c ĐỀ TÀI LUẬN VĂN “Nghiên cứu phương pháp đọc hiệu chuẩn thước vạch MIA” Giáo viên hướng dẫn Lời cảm ơn Để hoàn thành đồ án này, em xin bày tỏ lòng biết ơn sâu sắc đến thầy cô trường Đại học Bách Khoa Hà Nội nói chung, viện Cơ khí, mơn Cơ khí xác Quang học nói riêng Các thầy nhiệt tình dạy, hỗ trợ cung cấp cho em nhiều kiến thức tài liệu quý giá suốt trình học tập vừa qua Em xin chân thành cảm ơn giảng viên hướng dẫn TS Nguyễn Thị Kim Cúc thuộc môn Cơ khí xác Quang học tận tình hướng dẫn giúp em vượt qua khó khăn q trình làm luận văn Bên cạnh em chân thành cảm ơn anh chị phòng Đo lường Độ dài – Viện Đo lường Việt Nam tạo điều kiện giúp đỡ, hỗ trợ trình làm việc Ngồi suốt q trình nghiên cứu, em nhận giúp đỡ, hỗ trợ bạn sinh viên phịng thí nghiệm C4,5-307 Em xin gửi lời cảm ơn bạn ban chủ nhiệm môn Cuối em xin gửi lời cảm ơn đến gia đình bạn bè giúp đỡ, chia sẻ em trình học tập hồn thành luận văn Em xin chân thành cảm ơn Tóm tắt nội dung luận văn Luận văn gồm 66 trang trình bày chương bao gồm: 1) Tổng quan phương pháp hiệu chuẩn thước vạch MIA; 2) Cơ sở lý thuyết xây dựng hệ thống hiệu chuẩn thước vạch MIA; 3) Sử dụng camera thiết kế phần mềm đọc vạch; 4) Hiệu chuẩn thước vạch MIA sử dụng hệ thống chế tạo Kết luận Luận văn nghiên cứu dựa nguyên lý hoạt động giao thoa kế laser để hiệu chuẩn thước vạch MIA Luận văn nghiên cứu chế tạo cụm đồ gá camera, phát triển phần mềm xử lý ảnh để kết hợp với hệ thống sẵn có Phịng Đo lường Độ dài – Viện Đo lường Việt Nam Kết luận văn có ý nghĩa khoa học quan trọng giúp nâng cao tính xác phép hiệu chuẩn thước vạch MIA, bên cạnh cải tiến thao tác đo, giúp giảm bớt thời gian cơng sức q trình đo Sự thành công đề tài tiền đề vững để xây dựng hệ thống đo/hiệu chuẩn loại thước vạch khác HỌC VIÊN 7ʺ,IÈOI1IBO MỤC LỤC CHƯƠNG TỔNG QUAN VỀ PHƯƠNG PHÁP HIỆU CHUẨN THƯỚC VẠCH MIA 1.1 1.2 Khái quát thước vạch MIA 1.1.1 Thước vạch MIA 1.1.2 Các loại thước vạch MIA thông dụng cách sử dụng Hiệu chuẩn thước vạch MIA 1.2.1 Khái niệm hiệu chuẩn phương tiện đo 1.2.2 Mục đích nghiên cứu hiệu chuẩn thước vạch MIA 1.2.3 Phương pháp đo/hiệu chuẩn thước vạch MIA giao thoa kế laser 1.3 Tổng quan số phương pháp đo, hệ thống hiệu chuẩn thước vạch MIA nghiên cứu ứng dụng nước 1.3.1 Viện Đo lường Quốc gia Trung Quốc (NIM) 1.3.2 Phịng thí nghiệm Đo lường Quốc gia Đài Loan (NML) 1.3.3 Đại học Công nghệ Graz, Áo 11 1.3.4 Viện Trắc địa Địa tin học, trường Đại học Môi trường Khoa học Đời sống Wroclaw, Ba Lan 11 1.4 Hệ thống hiệu chuẩn thước vạch MIA băng máy đo chiều dài vạn Viện Đo lường Việt Nam 16 CHƯƠNG CƠ SỞ LÝ THUYẾT XÂY DỰNG HỆ THỐNG HIỆU CHUẨN THƯỚC VẠCH MIA 18 2.1 2.2 Giao thoa kế laser 18 2.1.1 Giao thoa kế laser hai tần số 18 2.1.2 Hệ thống giao thoa kế laser Viện Đo lường Việt Nam 19 Nguyên lý hệ thống 20 2.2.1 Hệ thống hiệu chuẩn cũ 20 2.2.2 Hệ thống hiệu chuẩn nghiên cứu xây dựng (mới) 21 2.3 Những yếu tố ảnh hưởng tới độ xác hệ thống hiệu chuẩn thước vạch MIA: 22 2.3.1 Bước sóng laser 22 2.3.2 Sai số điện tử 23 2.3.3 Sai số phi tuyến tính quang học 23 2.3.4 Sai số giãn nở nhiệt 24 2.3.5 Sai số chênh lệch thông số môi trường 24 2.3.6 Sai số Deadpath 25 2.3.7 Sai số Abbé 26 2.3.8 Sai số Cosin 27 2.3.9 Sai số xác định vị trí vạch 27 CHƯƠNG THIẾT KẾ, XÂY DỰNG HỆ THỐNG HIỆU CHUẨN THƯỚC VẠCH MIA SỬ DỤNG CAMERA 28 3.1 3.2 3.3 Thiết kế, xây dựng hệ thống 28 3.1.1 Giao thoa kế laser 29 3.1.2 Cụm đồ gá camera 31 Tính tốn lựa chọn camera 36 3.2.1 Tính tốn vùng đo camera 36 3.2.2 Lựa chọn camera 40 Phần mềm đọc vạch xử lý ảnh 41 CHƯƠNG THỰC NGHIỆM HIỆU CHUẨN THƯỚC VẠCH MIA 45 4.1 4.2 Phương pháp hiệu chuẩn thước vạch MIA 45 4.1.1 Điều kiện phương tiện hiệu chuẩn thước vạch MIA 45 4.1.2 Các bước hiệu chuẩn thước vạch MIA 46 4.1.3 Mơ hình tốn học 46 4.1.4 Ước lượng ĐKĐBĐ thành phần 47 Kết thực nghiệm so sánh 48 4.2.1 Hệ thống hiệu chuẩn cũ 48 4.2.1 Hệ thống hiệu chuẩn 51 KẾT LUẬN 55 TÀI LIỆU THAM KHẢO 56 PHỤ LỤC 58 DANH MỤC HÌNH VẼ Hình 1.1 Thước vạch MIA dạng vạch thường Hình 1.2 Thước vạch MIA dạng vạch chữ E Hình 1.3 Ví dụ đo khoảng cách máy thủy bình thước vạch MIA Hình 1.4 Thước vạch MIA dạng mã vạch Hình 1.5 Sơ đồ hoạt động phương pháp đo giao thoa laser Hình 1.6 Hệ thống hiệu chuẩn thước vạch MIA NIM Hình 1.7 Sơ đồ dẫn xuất chuẩn hệ thống hiệu chuẩn thước vạch MIA NIM Hình 1.8 Sơ đồ hệ thống hiệu chuẩn thước vạch MIA NML Hình 1.9 Hình ảnh thực tế phận đọc vạch thước vạch MIA NML Hình 1.10 Sơ đồ dẫn xuất chuẩn hệ thống hiệu chuẩn thước vạch MIA NML 10 Hình 1.11 Hệ thống hiệu chuẩn trường Đại học Công nghệ Graz, Áo 11 Hình 1.12 Sơ đồ hệ thống hiệu chuẩn trường Wroclaw, Ba Lan 12 Hình 1.13 Cấu tạo hệ thống hiệu chuẩn trường Đại học Wroclaw, Balan 12 Hình 1.14 Nguyên lý vận hành hệ thống trường Đại học Wroclaw, Balan 13 Hình 1.15 Hệ thống hiệu chuẩn có Viện Đo lường Việt Nam 16 Hình 2.1 Sơ đồ nguyên lý hệ giao thoa laser 18 Hình 2.2 Nguyên lý hoạt động hệ thống giao thoa kế laser VMI 19 Hình 2.3 Sơ đồ nguyên lý hệ thống hiệu chuẩn cũ 20 Hình 2.4 Hình ảnh tổng quan hệ thống hiệu chuẩn cũ VMI 21 Hình 2.5 Sơ đồ nguyên lý hệ thống hiệu chuẩn 22 Hình 2.6 Biểu đồ sai số phi tuyến tính quang học 24 Hình 2.7 Sai số Deadpath di chuyển gương phản xạ 25 Hình 2.8 Phương pháp giảm thiểu sai số Deadpath 26 Hình 2.9 Sai số Abbé 26 Hình 2.10 Sai số Cosin 27 Hình 3.1 Hình ảnh tổng quan hệ thống phần mềm thiết kế 28 Hình 3.2 Hình ảnh thực tế hệ thống VMI 28 Hình 3.3 Kích thước nguồn laser HP 5519A 29 Hình 3.4 Hình ảnh thực tế nguồn laser 5519A 30 Hình 3.5 Kích thước gương phản xạ 10767A 30 Hình 3.6 Gương phản xạ 10767A 30 Hình 3.7 Kích thước gương giao thoa 10766A 31 Hình 3.8 Gương giao thoa 10766A 31 Hình 3.9 Kích thước trục kim loại băng trượt hệ thống 32 Hình 3.10 Cụm đồ gá camera phần mềm thiết kế 32 Hình 3.11 Cụm vi chỉnh trục X, Y, Z phần mềm thiết kế 33 Hình 3.12 Cụm vi chỉnh trục X, Y 33 Hình 3.13 Cụm vi chỉnh trục Z 34 Hình 3.14 Hình ảnh thực tế cụm vi chỉnh trục X, Y, Z 35 Hình 3.15 Hình ảnh cụm gá lắp camera phần mềm thiết kế 35 Hình 3.16 Hình ảnh thực tế cụm đồ gá camera 36 Hình 3.17 Sơ đồ xác định giới hạn vùng đo hệ thống 36 Hình 3.18 Sơ đồ tạo ảnh qua thấu kính 37 Hình 3.19 Camera CS165CU1/M Thorlab 40 Hình 3.20 Sơ đồ khối q trình phần mềm xử lý thơng tin từ camera 42 Hình 3.21 Hình ảnh vạch thước thu camera 43 Hình 3.22 Phần mềm đo giao thoa kế laser (trái) phần mềm xử lý ảnh (phải) 44 Hình 4.1 Độ lệch trung bình thước theo phương pháp cũ 49 Hình 4.2 Giao diện phần mềm vị trí thước 51 Hình 4.3 Độ lệch trung bình thước theo phương pháp 53 DANH MỤC BẢNG BIỂU Bảng 1.1 ĐKĐBĐ phép hiệu chuẩn thước vạch MIA NIM Bảng 1.2 ĐKĐBĐ phép hiệu chuẩn thước vạch MIA NML 10 Bảng 1.3 Thông số kỹ thuật hệ thống hiệu chuẩn trường Đại học Wroclaw 14 Bảng 3.1 Thông số kỹ thuật nguồn laser 5519A hãng Agilent HP 29 Bảng 3.2 Thông số kỹ thuật cụm vi chỉnh trục X, Y 34 Bảng 3.3 Thông số kỹ thuật cụm vi chỉnh trục Z 34 Bảng 3.4 Bảng thông số kỹ thuật camera CS165CU1/M 40 Bảng 4.1 Hệ thống hiệu chuẩn thước vạch MIA 45 Bảng 4.2 Kết hiệu chuẩn phương pháp cũ 48 Bảng 4.3 Tính tốn độ khơng đảm bảo đo theo phương pháp cũ 49 Bảng 4.4 Bảng tổng hợp độ không đảm bảo đo theo phương pháp cũ 50 Bảng 4.5 Giá trị đo laser phần mềm 51 Bảng 4.6 Giá trị đo camera phần mềm 52 Bảng 4.7 Kết hiệu chuẩn phương pháp 52 Bảng 4.8 Tính tốn độ khơng đảm bảo đo theo phương pháp 53 Bảng 4.9 Bảng tổng hợp độ không đảm bảo đo theo phương pháp 53 0.060 Độ lệch trung bình (mm) 0.050 0.040 0.030 0.020 0.010 0.000 200 400 600 800 1000 1200 1400 1600 1800 Vị trí kiểm (mm) Hình 4.3 Độ lệch trung bình thước theo phương pháp Từ Hình 4.1 Độ lệch trung bình thước theo phương pháp cũ Hình 4.3 Độ lệch trung bình thước theo phương pháp thể thấy xu hướng độ lệch trung bình thước theo hai phương pháp có tương đồng vị trí kiểm Tuy độ lệch trung bình theo phương pháp có giá trị nhỏ phương pháp cũ Bảng 4.8 Tính tốn độ khơng đảm bảo đo theo phương pháp Với phương pháp ước lượng ĐKĐBĐ trình bày mục 4.1.4, ta ước lượng giá trị ĐKĐBĐ theo phương pháp vị trí kiểm phạm vi hiệu chuẩn (0 – 1800) mm Tại vị trí 1800 mm, ĐKĐBĐ đạt giá trị lớn 5,9 μm = 0,0059 mm 53 Bảng 4.9 Bảng tổng hợp độ không đảm bảo đo theo phương pháp TT Nguồn ĐKĐBĐ Ký hiệu ĐKĐBĐ tiêu chuẩn |ci| ĐKĐBĐ thành phần ݑ௦ 1,0×10-8 L 1,0×10-8 L Nguồn laser Độ lặp lại phép đo ݑ lặp 1,0 μm 1,0 μm Độ phân giải ݑ௦ chuẩn 0,003 μm 0,003 μm Độ không ổn định nhiệt độ thước vạch MIA với nhiệt độ tiêu chuẩn ݑο் 0,058 ºC 23×10-6 ℃-1 1,3×10-6 L Hệ số giãn nở nhiệt thước vạch MIA ݑοఈ 0,87×10-6 ℃-1 0,1 ℃ 0,087×10-6 L Xác định vị trí vạch ݑ௩ 0,9 μm ͳ 0,9 μm Với phương pháp mới, ta có ĐKĐBĐ tổng hợp: ݑଶ ൌ ට ݏݑଶ ݁ݎݑଶ ݏ݁ݎݑଶ ݑοܶ ଶ ݑοߙ ଶ ݒݑଶ (4.13) Và ĐKĐBĐ mở rộng: (4.14) ܷଶ ൌ ݇ ൈ ݑଶ với k = 2; P | 95 % [16] Vậy: ܷଶ ൎ ሺʹǡ ʹǡ ൈ ͳͲି ܮሻɊ với ሾܮሿǣ ݉ (݇ ൌ ʹሻ (4.15) Kết hiệu chuẩn lần tiến hành đo theo phương pháp cũ lần tiến hành đo theo phương pháp cho thấy ổn định hệ thống sử dụng camera phần mềm xử lý ảnh Đối với phương pháp cũ, ĐKĐBĐ độ lặp lại phép đo tương đối lớn so với phương pháp Ngoài ra, ĐKĐBĐ phương pháp xác định vị trí vạch cải thiện đáng kể Ngồi hai ĐKĐBĐ trên, tất ĐKĐBĐ lại hai phương pháp xấp xỉ nhau, ta thấy tính xác phép hiệu chuẩn thước vạch MIA cải thiện Ngoài trình đo, việc sử dụng camera phần mềm xử lý ảnh giúp giảm bớt thời gian tiến hành thao tác đo Tại điểm cần đo, thay phải dùng mắt để đưa tâm ống ngắm tới sát mép vạch, với camera ta cần đưa đường tâm camera tới gần vạch thước Khả tính tốn tự động đưa kết file excel phần mềm giảm đáng kể thời gian xử lý số liệu 54 KẾT LUẬN Nghiên cứu cải thiện nâng cấp phương pháp đọc hiệu chuẩn thước vạch MIA nhiệm vụ thường xuyên, cấp thiết quan đo lường nói chung, Viện Đo lường Việt Nam nói riêng Qua trình nghiên cứu, tính tốn xây dựng, luận văn đạt kết sau: Sau nghiên cứu, phân tích đánh giá nghiên cứu phương pháp hiệu chuẩn thước vạch MIA đơn vị đo lường nước ngoài, luận văn đưa yêu cầu vấn đề cần giải cụ thể Nội dung nghiên cứu luận văn bám sát với mục tiêu tên đề tài luận văn đề Tính tốn lựa chọn camera có thơng số kỹ thuật đáp ứng u cầu hệ thống hiệu chuẩn Tính tốn, thiết kế chế tạo cụm đồ gá camera đáp ứng yêu cầu hệ thống hiệu chuẩn Thiết kế, xây dựng phần mềm xử lý ảnh tính tốn kết đo, giúp cải thiện thời gian thao tác trình đo/hiệu chuẩn xử lý số liệu Tiến hành thực nghiệm so sánh kết hai hệ thống hiệu chuẩn cũ Tính tốn ĐKĐBĐ hai phép đo so sánh kết Ngoài thước vạch MIA, hệ thống hiệu chuẩn nâng cấp đáp ứng nhu cầu đo/hiệu chuẩn loại thước vạch khác Với loại thước vạch có độ xác cao (VD Thước vạch chuẩn…), sử dụng camera có độ phân giải cao hơn, kết hợp camera với ống kính có độ phóng đại lớn để cải thiện độ xác phép đo Bên cạnh đó, tốc độ xử lý phần mềm cần cải thiện để giảm thiểu độ trễ thu tín hiệu phần mềm giao thoa kế laser Cuối cùng, hệ thống hiệu chuẩn cần thực nghiệm đánh giá thêm tương lai để đảm bảo độ ổn định độ tin cậy phương pháp đo 55 TÀI LIỆU THAM KHẢO [1] Thông tư 07/2019/TT-BKHCN, Hà Nội: Bộ Khoa học Công nghệ, 2019 [2] Laser interferometer error-proofs linear scale calibration, 2019 [3] Uncertainty budget Line Standard Invar Standard Tape, China National Metrology Insitute, 2018 [4] C.-T W M.-W C a W.-C C Chun-Sung Chen*, "ESTABLISHING AN INVAR LEVELING CALIBRATION SYSTEM," Journal of the Chinese Institute of Engineers, vol 35, pp 861-866 [5] H a B F Woschitz, "System Calibration of Digital Levels – Experimental Results of Systematic Effects," INGEO2002, 2nd Conference of Engineering Surveying, pp 165-172, 2002 [6] J G P Ć K R J a B G Kuchmister, "A functional-precision analysis of the Vertical Comparator," Elsevier, vol 163, no 107951, 2020 [7] H Haitjema, "Calibration of displacement laser interferometer system for industrial metrology," vol 19, 2019 [8] Keysight, "Keysight Technology 5530 Dynamic Calibrator (Data sheet)5989 9712EN," Keysight Technology Public in U.S.A, p 15, 2014 [9] Lasertex, "https://lasertex.eu/support/interferometer-usage-documentation/types-oferrors/" [10] Agilent 5529A Dynamic Calibrator, Agilent Technologies, 2001 [11] MISUMI,"https://vn.misumiec.com/vona2/detail/110300196730/?HissuCode=XYPGN60&PNSearch= XYPGN60&KWSearch=xypgn60&searchFlow=results2type&list=PageSe archResult" [12] MISUMI,"https://vn.misumiec.com/vona2/detail/110302199610/?HissuCode=ZLPG60L&PNSearch=Z LPG60L&KWSearch=zlpg60l&searchFlow=results2type&list=PageSearch Result" [13] N.T.K.Cúc, Nghiên cứu sử dụng phương pháp ánh sáng cấu trúc để nâng cao chất lượng đo chi tiết khí, Hà Nội: Luận án tiến sĩ, 2018 [14] Thorlab, "https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=13677&p n=CS165CU1/M#ad-image-0" [15] ĐLVN 283:2015, in Thước vạch chuẩn, Quy trình hiệu chuẩn, Hà Nội, Văn kỹ thuật đo lường Việt Nam, 2015, p 15 56 [16] I 9.-6.-1.-9 GUM- Guide to the express of uncertainty in measurement Switzerland : s.n., GUM- Guide to the express of uncertainty in measurement, Switzerland, 1993 [17] Standard Levelling Staffs – Calibration Procedure, Viện Đo lường Việt Nam, 2021 [18] Chaper Laser Heads, Agilent Technologies, 2002 [19] H F F d Castro, "UNCERTAINTY ANALYSIS OF A LASER CALIBRATION SYSTEM," 2007 [20] JCGM 100:2008, Evaluation of measurement data - Guide to the expression of uncertainty in measurement, 1st ed., BIPM, September 2008 [21] E J a D O Jerzy Józwik, "Estimation of uncertainty of laser interferometer measurement," TM Web of Conferences, vol 15, no 04005, 2017 [22] L C Lipus and G & A B Budzyn, "Analysis of laser interferometer measurement uncertainty by simulating error sources," 2021 [23] R Klobucar and B Acko, "Automatic high resolution measurement set‐up for calibrating," Advances in Production Engineering & Management, vol 12, no 1, 2017 57 PHỤ LỤC Phần mềm xử lý ảnh sử dụng ngơn ngữ lập trình Python, hệ điều hành Windows 10 64-bit import cv2 from tkinter import * import pyautogui from PIL import ImageTk, Image import time import keyboard import imutils import openpyxl from PIL import ImageGrab import numpy as np import glob from pyautogui import size, position from mss import mss x_start, y_start, x_end, y_end = 0, 0, 0, cropping = False ket_thuc = False def chon_phan_screen(chon_vung): global x_start, y_start, x_end, y_end, cropping, ket_thuc width_mh, height_mh = size() image = ImageGrab.grab(bbox=(1, 1, width_mh-1, height_mh-1)) image = np.array(image) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) tao = np.zeros(image.shape) tao = tao.astype(np.uint8) image_nen = cv2.addWeighted(image, 0.8, tao, 0.2, 0.0) def mouse_crop(event, x, y, flags, param): global x_start, y_start, x_end, y_end, cropping, ket_thuc # Nhấn chuột if event == cv2.EVENT_LBUTTONDOWN: x_start, y_start, x_end, y_end = x, y, x, y cropping = True # Chuột di chuyển elif event == cv2.EVENT_MOUSEMOVE: if cropping: x_end, y_end = x, y # nút chuột trái thả elif event == cv2.EVENT_LBUTTONUP: x_end, y_end = x, y cropping = False # cắt xong ket_thuc = True winname = "image" cv2.namedWindow(winname, cv2.WND_PROP_FULLSCREEN) cv2.setWindowProperty(winname, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN) cv2.setWindowProperty(winname, cv2.WND_PROP_TOPMOST, 1) 58 cv2.setMouseCallback(winname, mouse_crop) while True: i = image_nen.copy() vi_tri = position() cv2.putText(i, str(vi_tri), (10, 100), cv2.FONT_HERSHEY_COMPLEX_SMALL, 0.8, (16, 188, 241), 1) cv2.putText(i, str(chon_vung), (900, 100), cv2.FONT_HERSHEY_COMPLEX_SMALL, 3, (0, 0, 255), 2) if cropping: i[y_start:y_end, x_start:x_end] = image[y_start:y_end, x_start:x_end] cv2.rectangle(i, (x_start, y_start), (x_end, y_end), (255, 0, 0), 1) cv2.imshow(winname, i) cv2.waitKey(1) if ket_thuc: ket_thuc = False break cv2.destroyAllWindows() return x_start+1, y_start+1, x_end+1, y_end+1 def ok(): result1 = [] for i_img1 in sorted(glob.glob('Number' + "/*.jpg")): image1 = cv2.imread(i_img1, 0) i_result1 = cv2.matchTemplate(image1, image1, cv2.TM_CCOEFF) x1 = i_result1.max() result1.append(x1) return result1 def ham_chinh(vung_doc): anh_template = [] tH_tW_template = [] for i_img in sorted(glob.glob('Number' + "/*.jpg")): image = cv2.imread(i_img, 0) (tH, tW) = image.shape[:2] anh_template.append(image) tH_tW_template.append((tH, tW)) x = ok() # img = ImageGrab.grab(bbox=vung_doc) # (x, y, width, hight) # img_np = np.array(img) # image = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB) # gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 59 img = np.array(mss().grab(vung_doc)) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) kq = [] for i in range(len(x)): result = cv2.matchTemplate(gray, anh_template[i], cv2.TM_CCOEFF) result = result / x[i] m0, n0 = np.where(result > 0.99) sm0 = m0.size for mi in range(sm0): m = m0[mi] n = n0[mi] if i == 10: kq.append((".", n)) elif i == 11: kq.append(("-", n)) else: kq.append((i, n)) # sếp for i in range(len(kq)): for j in range(i): if kq[i][1] < kq[j][1]: tmp = kq[i] kq[i] = kq[j] kq[j] = tmp # kết cuối kqc = "" for i in range(len(kq)): kqc = f'{kqc}{kq[i][0]}' return kqc book = openpyxl.load_workbook('2.xlsx') sheet = book.active stt_cot = 'A' stt_cot_1 = 'K' vung_doc =chon_phan_screen("chon vung so") tk = Tk() tk.title('APP') # tiêu đề cửa sổ # tk.resizable(50, 50) # kích thước thay đổi dài rộng tk.geometry("640x720+670+0") # vị trí cửa sổ ban đầu ("1920x1080+0+0") canvas = Canvas(tk, width=1280, height=720) canvas.create_rectangle(0, 0, 3000, 3480, outline="#fb0", fill="#fb0") canvas.place(x=0, y=0) label = Label(text='120', font=('Times', '15'), fg='#3C3F41', bg='#FFFFFF') label.place(x=565, y=150) Ket_qua_do = Label(text='00000000', font=('Times', '30'), fg='red', ) Ket_qua_do.place(x=40, y=10) 60 def Up(): global th, canvas th = th + label.config(text=th) def Down(): global th, canvas th = th - label.config(text=th) def Stop(): global lap lap = False def ghi_kq(): global ghi_kq_do, stt_dong stt_dong = stt_dong + ghi_kq_do = True def doi_cam(): global cam, cap, ao, chay_1_lan chay_1_lan = True ao = ao + cam = cam + if cam > 2: cam = if cam == 0: cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) if ao > 1: btn_doi_cam.configure(text='Cam 1') elif cam == 1: cap = cv2.VideoCapture(1) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) if ao > 1: btn_doi_cam.configure(text='Quay hình') else: cap = if ao > 1: btn_doi_cam.configure(text='Cam 0') stt_dong = ao = cap = 61 cam = doi_cam() th = 120 x1 = x2 = lap = True ghi_kq_do = False def che_do_do(): global ao2 ao2 = ao2 + if ao2 > 2: ao2 = if ao2 == 0: btn_do.configure(text='Đo song song') elif ao2 == 2: btn_do.configure(text='Đo chính') else: btn_do.configure(text='Đo bên phải') ao2 = def Tu_dong_do(): global ao3, vi_tri_do ao3 = ao3 + if ao3 > 1: ao3 = if ao3 == 0: td_do.configure(text='Đo chẵn') vi_tri_do = h // else: td_do.configure(text='Đo lẻ') vi_tri_do = * h // ao3 = btn_up = Button(tk, text="Up", width=10, command=Up, fg='red', bg='black') btn_up.place(x=540, y=110) btn_down = Button(tk, text="Down", width=10, command=Down, fg='red', bg='black') btn_down.place(x=540, y=190) btn_stop = Button(tk, text='Stop', width=10, command=Stop, fg='red', bg='black') btn_stop.place(x=540, y=350) btn_ghi_kq = Button(tk, text='Đo', width=10, command=ghi_kq, fg='red', bg='black') btn_ghi_kq.place(x=200, y=485) btn_doi_cam = Button(tk, text='Đổi Cam', width=10, command=doi_cam, fg='red', bg='black') 62 btn_doi_cam.place(x=540, y=230) btn_do = Button(tk, text='Đo song song', width=10, command=che_do_do, fg='red', bg='black') btn_do.place(x=540, y=270) td_do = Button(tk, text='Đo chẵn', width=10, command=Tu_dong_do, fg='red', bg='black') td_do.place(x=540, y=310) chay_1_lan = True dem = while lap: try: if cam == or cam == 0: ret, image = cap.read() else: image = np.array(mss().grab(vung_doc)) (h, w, d) = image.shape while chay_1_lan: vi_tri_do = h // print(vi_tri_do) chay_1_lan = False gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) gray1 = cv2.GaussianBlur(gray, (11, 11), 0) thresh = cv2.threshold(gray1, th, 255, cv2.THRESH_BINARY_INV)[1] cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) cnts = imutils.grab_contours(cnts) noi_cnts = cnts[0] for i in range(len(cnts)): if i != 0: noi_cnts = np.concatenate((noi_cnts, cnts[i]), axis=0) for c in cnts: cv2.drawContours(image, [c], -1, (255, 0, 0), 1) # màu, kích cỡ trucy = cv2.line(image, (w // 2, 0), (w // 2, h), (0, 0, 255), 2) trucx = cv2.line(image, (0, h // 2), (w, h // 2), (0, 0, 255), 2) '''code theo kết laser ''' # if kq_laser: # td_do.configure(text='Đo chẵn') # vi_tri_do = h // # else: # td_do.configure(text='Đo lẻ') # vi_tri_do = * h // # Chương trình đo kq_laser = ham_chinh(vung_doc) if ao2 == 0: index = np.where(noi_cnts == vi_tri_do) # print(index) x_moc = tuple(noi_cnts[index[0][i], 0, 0] for i, j in enumerate(index[2]) if j) 63 try: index_min_x_moc = np.argmin(tuple(abs(i - w // 2) for i in x_moc)) x2 = x_moc[index_min_x_moc] idx_moc = np.where(np.prod(noi_cnts[:, 0] == [x2, vi_tri_do], axis=1)) list_x = [] dau_cuoi = [] khoang_do = 800 for i in range(khoang_do): if i == or i == khoang_do-1: dau_cuoi.append(noi_cnts[:, 0][int(idx_moc[0][0] - khoang_do // + i)]) list_x.append(noi_cnts[:, 0][int(idx_moc[0][0] - khoang_do // + i)][0]) x_tb = np.mean(list_x) cv2.circle(image, dau_cuoi[0], 3, (0, 255, 0), -1) cv2.circle(image, dau_cuoi[-1], 3, (0, 255, 0), -1) cv2.line(image, (int(x_tb), dau_cuoi[0][1]), (int(x_tb), dau_cuoi[1][1]), (0, 255, 0), 1) x2 = int(x_tb) cv2.line(image, (x2, vi_tri_do), (w // 2, vi_tri_do), (0, 0, 255), 1) kq_cam = abs(x2 - w // 2) cv2.putText(image, str(kq_cam), ((w // + x2) // - 20, vi_tri_do 20), cv2.FONT_HERSHEY_SIMPLEX, 1, (240, 0, 159), 2) # viết lên hình except: pass # Đo độ song song elif ao2 == 1: index = np.where(noi_cnts == w//2) y_moc = (noi_cnts[index[0][i], 0, 1] for i, j in enumerate(index[2]) if not j and noi_cnts[index[0][i], 0, 1] < h // 2) try: y1 = max(y_moc) except: y1 = cv2.line(image, (w // 2, h // 2), (w // 2, y1), (0, 255, 0), 2) text = '{}'.format(abs(h // - y1)) cv2.putText(image, text, ((w // + 7), (y1 + (h // - y1) // 2)), cv2.FONT_HERSHEY_SIMPLEX, 1, (240, 0, 159), 2) # Đo bên trái elif ao2 == 2: index = np.where(noi_cnts == vi_tri_do) x_moc = (noi_cnts[index[0][i], 0, 0] for i, j in enumerate(index[2]) if j and noi_cnts[index[0][i], 0, 0] < w // 2) try: x1 = max(x_moc) 64 idx_moc = np.where(np.prod(noi_cnts[:, 0] == [x1, vi_tri_do], axis=1)) list_x = [] dau_cuoi = [] khoang_do = 800 for i in range(khoang_do): if i == or i == khoang_do-1: dau_cuoi.append(noi_cnts[:, 0][int(idx_moc[0][0] - khoang_do // + i)]) list_x.append(noi_cnts[:, 0][int(idx_moc[0][0] - khoang_do // + i)][0]) x_tb = np.mean(list_x) cv2.circle(image, dau_cuoi[0], 3, (0, 255, 0), -1) cv2.circle(image, dau_cuoi[-1], 3, (0, 255, 0), -1) cv2.line(image, (int(x_tb), dau_cuoi[0][1]), (int(x_tb), dau_cuoi[1][1]), (0, 255, 0), 1) x1 = int(x_tb) except: x1 = cv2.line(image, (w // 2, vi_tri_do), (x1, vi_tri_do), (0, 0, 255), 1) kq_cam = x1 - w // """he_so = 0.00361 kq_1 = kq_cam * he_so kq_cam = float(kq_laser) + kq_cam * he_so""" cv2.putText(image, str(kq_cam), ((w // + x1) // - 20, vi_tri_do - 20), cv2.FONT_HERSHEY_SIMPLEX, 1, (240, 0, 159), 2) # viết lên hình if w // - x1 < 5: kc = cv2.putText(image, str(kq_cam), ((w // + x1) // - 20, vi_tri_do - 20), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 1) trucy = cv2.line(image, (w // 2, 0), (w // 2, h), (0, 255, 0), 2) trucx = cv2.line(image, (0, h // 2), (w, h // 2), (0, 255, 0), 2) if ghi_kq_do: dem = dem + if dem < 6: sheet[f'{chr(ord(stt_cot_1) + dem)}{stt_dong}'] = float(kq_cam) sheet[f'{chr(ord(stt_cot) + dem)}{stt_dong}'] = float(kq_laser) else: ghi_kq_do = False dem = book.save('2.xlsx') # Chuyển đổi lại ảnh frame = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) frame = imutils.resize(frame, width=500) h_, w, d = frame.shape img = Image.fromarray(frame) # chuyển mảng ảnh PIL img2 = ImageTk.PhotoImage(image=img) 65 canvas.create_image(0, 275 - h_ // 2, anchor=NW, image=img2) Ket_qua_do.configure(text=str(kq_laser)) tk.update_idletasks() tk.update() time.sleep(0.01) if keyboard.is_pressed('q'): break except: print("co loi ") 66 ... Hiệu chuẩn thước vạch MIA 1.2.1 Khái niệm hiệu chuẩn phương tiện đo 1.2.2 Mục đích nghiên cứu hiệu chuẩn thước vạch MIA 1.2.3 Phương pháp đo /hiệu chuẩn thước vạch MIA giao... mềm đọc vạch xử lý ảnh 41 CHƯƠNG THỰC NGHIỆM HIỆU CHUẨN THƯỚC VẠCH MIA 45 4.1 4.2 Phương pháp hiệu chuẩn thước vạch MIA 45 4.1.1 Điều kiện phương tiện hiệu chuẩn thước vạch MIA. .. Tổng quan phương pháp hiệu chuẩn thước vạch MIA; 2) Cơ sở lý thuyết xây dựng hệ thống hiệu chuẩn thước vạch MIA; 3) Sử dụng camera thiết kế phần mềm đọc vạch; 4) Hiệu chuẩn thước vạch MIA sử dụng