Sử dụng giao diện đồ họa Tkinter và thư viện sử lý ảnh Opencv2 để viết giao diện gui sinh mã qr code

Tổng quan về tkinter trong Python. Tổng quan về OPENCV. QR code là gì? Ưu, nhược điểm của QR code. Mô tả phần mềm. Thiết kế chương trình. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!

lOMoARcPSD| 45349271
TRƯNG ĐI HC CÔNG NGHÊ THÔNG TIN V TRUYN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
MÔN HC:
PHÁT TRIỂN ỨNG DỤNG PYTHON
Tên bài tập :
SỬ DỤNG GIAO DIỆN ĐỒ HA TKINTER V THƯ VIỆN XỬ LÝ ẢNH
OPENCV2 ĐỂ VIẾT GIAO DIỆN GUI SINH MÃ QR CODE
Sinh viên thực hiện :
+ Ma Doãn Huy Hùng
+ Ma Doãn Huy Hậu
+ Hoàng Minh Đạt
+ Nguyễn Văn Phúc
+ Lâm Hữu Quốc
Chương I: Tổng quan
1. Tổng quan về tkinter trong Python
lOMoARcPSD| 45349271
1.1. Tkinter trong Python là gì?
Tkinter là một thư viện trong ngôn ngữ lập trình Python được sử dụng để tạo
giao diện đồ họa người dùng (GUI). "Tkinter" là viết tắt của "Tk interface,",
một toolkit đồ họa cung cấp các công cụ để phát triển giao diện người dùng.
Tkinter là một phần của thư viện tiêu chuẩn của Python và đã được tích hợp sẵn
trong hầu hết các cài đặt Python. Điều này giúp cho Tkinter trở thành một lựa
chọn phổ biến cho việc phát triển ứng dụng với giao diện đồ họa đơn giản trong
Một số đặc điểm của Tkinter bao gồm khả năng tạo các thành phần giao diện
như cửa sổ, nút, ô văn bản, và các widget khác để tương tác với người dùng.
Tkinter cung cấp cả các sự kiện và phương thức để xử lý tương tác người dùng
và thay đổi trạng thái của ứng dụng.
2. Tổng quan về OPENCV
2.1 Khái niệm OpenCV là gì?
OpenCV là tên viết tắt của open source computer vision library – có thể được hiểu là một thư
viện nguồn mở cho máy tính. Cụ thể hơn OpenCV là kho lưu trữ các mã nguồn mở được dùng
để xử lý hình ảnh, phát triển các ứng dụng đồ họa trong thời gian thực.
OpenCV cho phép cải thiện tốc độ của CPU khi thực hiện các hoạt động real time. còn cung
cấp một số lượng lớn các xử phục vụ cho quy trình của thị giác máy tính hay các learning
machine khác.
Thư viện OpenCV được phát hành với giấy phép BDS. Do đó các dịch vụ nó cung cấp là hoàn
toàn miễn phí được hạn chế tối đa các rào cản thông thường. Cụ thể, bạn được phép sử dụng
phần mềm này cho cả hoạt động thương mại lẫn phi thương mại. OpenCV sở hữu giao diện
thiên thiện với mọi loại ngôn ngữ lập trình, ví dụ như C++, C, Python hay Java… Ngoài ra,
cũng dễ dàng tương thích với các hđiều hành khác nhau, bao gồm từ Windows, Linux, Mac
OS, iOS cho đến cả Android.
Kể từ lần đầu xuất hiện từ năm 1999, giờ đây OpenCV đã sở hữu đội ngũ người dùng hùng
hậu, con số ước tính có thể lên tới 47.000 người. Tất cả là nhờ những ưu điểm vượt trội của
OpenCV.
2.2 Các module được dùng trong OpenCV gì?
lOMoARcPSD| 45349271
OpenCV cấu trúc module, tức bao gồm cả những tviện liên kết tĩnh
lẫn thư viện liên kết động. Nắm các module của OpenCV sẽ giúp bạn đọc hoàn
toàn thấu hiểu OpenCV là gì.
+ Core functionality (core): Module này sở hữu chế rất nhỏ gọn. được
dùng để định hình các cấu trúc của sở dữ liệu bản, bao gồm cả những
mảng đa chiều. Ngoài ra còn xác định các chức năng của những module đi
kèm khác nữa.
+ Image Processing (imgproc): Đây module được dùng cho quá trình xử
hình ảnh. cho phép người dùng thực hiện các hoạt động như lọc hình ảnh
tuyến tính phi tuyến, thực hiện phép biến hình, thay đổi không gian màu,
xây dựng biểu đồ và rất nhiều thao tác khác liên quan.
+ Video Analysis (video): Giống như tên gọi của nó, module này cho phép phân
tích các video. Kết quả được trả về bao gồm các ước tính chuyển động, thực
hiện tách nền và các phép toán theo dõi vật thể.
+ Camera Calibration and 3D Reconstruction (calib3d): Module này cung cấp
các thuật toán hình học đa chiều bản hiệu chuẩn máy ảnh single stereo.
Ngoài ra còn đưa ra các dự đoán kiểu dáng của đối tượng và sử dụng thuật
toán thư tín âm thanh nổi cùng các yếu tố tái tạo 3D.
+ 2D Features Framework (features2d): Module này giúp phát hiện các tính
năng nổi trội của bộ nhận diện, bộ truy xuất thông số và thông số đối chọi.
+ Ngoài ra còn rất nhiều module khác với đa dạng tính năng, dụ như:
FLANN, Google test wrapper… 2.3 Ứng dụng của OpenCVgì?
OpenCV được cho là một phần mềm đa nhiệm. Nó được ứng dụng trong rất nhiều trường hợp
khác nhau. Ví dụ, ta sẽ nói về các phần mềm định vị, bản đồ nói chung. Hẳn rằng trong chúng
ta ai cũng đã có ít nhất một lần cần sử dụng đến các map online đúng không. Bạn sử dụng các
map để tìm đường, tra cứu tình hình giao thông hoặc đơn giản là xem xét các hình ảnh thực tế
của địa điểm cần đến. Những lúc như vậy, OpenCV đóng vai trò là nhà cung cấp dữ liệu hình
ảnh cho các app về Map này. OpenCV sẽ đem đến cho người dùng hình ảnh về đường phố hay
các căn nhà, con người xung quanh địa điểm được chỉ định.
OpenCV còn được dùng để khởi tạo ra những hình ảnh 3 chiều phức tạp. Hoạt động này rất
được yêu thích, nhất là trong thời đại trí tuệ nhân tạo AI phát triển như thế này.
Đối với các công nghhiện đại, OpenCV cũng là một yếu tố không thể thiếu. Tất cả những ứng
dụng công nghệ như robot, xe tự lái, bảng cảm ứng thông minh… đều sự góp mặt của
OpenCV trong khâu xử lý hình ảnh. Ví dụ gần gũi nhất trong cuộc sống có thể kể đến hệ thống
mở khóa điện thoại bằng cách nhận diện khuôn mặt người dùng
lOMoARcPSD| 45349271
Chương II: Tổng quan về QR code
1. QR code là gì?
QR Code (mã QR) là viết tắt của Quick response code (Tạm dịch: Mã phản hồi nhanh), hoặc
có thể gọi là Mã vạch ma trận (Matrix-barcode) hay Mã vạch 2 chiều (2D). Đây là một dạng
thông tin được mã hóa để hiển thị sao cho máy có thể đọc được.
QR Code xuất hiện lần đầu tiên vào năm 1994, được tạo ra bởi Denso Wave (công ty con của
Toyota). QR Code bao gồm những chấm đen và ô vuông mẫu trên nền trắng, có thể chứa
những thông tin như URL, thời gian, địa điểm của sự kiện, mô tả, giới thiệu một sản phẩm
nào đó,...
QR Code cho phép quét và đọc mã nhanh hơn bằng các thiết bị như máy đọc mã vạch hoặc
điện thoại có camera với ứng dụng cho phép quét mã, vô cùng tiện lợi cho người dùng.
2. Ưu, nhược điểm của QR code:
* Ưu điểm:
+ Tính thẩm mỹ
QR Code chiếm ít không gian hơn rất nhiều so với mã vạch truyền thống. Nếu in trên sản
phẩm hoặc danh thiếp thì sẽ nhỏ gọn và tăng tính thẩm mỹ hơn.
+ Tiện lợi truy xuất thông tin sản phẩm và thanh toán online
Bạn có thể thường xuyên nhìn thấy mã này trên các sản phẩm mình sử dụng. Doanh nghiệp
thường đặt QR Code để người dùng có thể quét mã và truy xuất các thông tin về sản phẩm
như nơi sản xuất, loại sản phẩm, thành phần sản phẩm, các danh mục liên quan,...Không chỉ
thế, ngày nay mã QR còn được dùng để thanh toán online rất tiện lợi.
+ Trao đổi thông tin liên lạc nhanh chóng
QR Code cũng có thể được sử dụng để trao đổi các thông tin và phương thức liên lạc. Bạn chỉ
cần quét mã và xem giới thiệu về một doanh nghiệp hoặc số điện thoại hay địa chỉ của một
người nào đó. Chẳng hạn như bạn hoàn toàn có thể tìm kiếm bạn bè trên các mạng xã hội như
Facebook, TikTok,Zalo,Instagram... một cách nhanh chóng thông qua mã QR mà các nhà
phát triển nền tảng đó cung cấp cho bạn.
* Nhược điểm:
+ Không có thông tin thay thế để tra cứu nếu hình ảnh QR bị lỗi.
+ Dễ bị sử dụng để làm giả/chứa liên kết độc hại, người dùng cần cảnh giác khi quét mã QR từ
nguồn không tin cậy.
+ Mã QR thường yêu cầu kết nối internet để truy cập thông tin hoặc tài liệu mà nó trỏ đến.
lOMoARcPSD| 45349271
Chương III: Phần mềm tạo QR code
1. Mô tả phần mềm:
- Phần mềm hỗ trợ người dùng tạo QR từ thông tin cụ thể như văn bản, đường dẫn, vị
trí,... Người dùng nhập các thông tin trên vào phần nhập thông tin chọn chức năng tạo QR
code, khi tạo thành công mã QR sẽ được lưu vào máy và hiển thị lên màn hình.
- Người dùng có thể quét QR trực tiếp hoặc gửi cho người khác quét để truy cập thôngtin.
2. Thiết kế chương trình:
- thêm thư viện:
+ openvc2, pillow: để xử lý hình ảnh.
+tkinter: để thiết kế giao diện.
+ qrcode: để tạo QRcode.
- Tạo hàm tạo QR và lưu ảnh vào bộ nhớ
- Hàm xử lý khi bấm nút sinh QR
lOMoARcPSD| 45349271
- Hàm hiển thị mã QR sau khi tạo thành công
3. Giao diện chương trình:
-Giao diện chương trình
lOMoARcPSD| 45349271
-Giao diện chương trình sau khi tạo QR
lOMoARcPSD| 45349271
- Đoạn chương trình này để tạo giao diện của chương trình tạo QRcode
| 1/8

Preview text:

lOMoAR cPSD| 45349271
TRƯỜNG Đ䄃I H伃⌀C CÔNG NGHÊ THÔNG TIN V䄃 TRUYN THÔNG̣
KHOA CÔNG NGHỆ THÔNG TIN MÔN H伃⌀C:
PHÁT TRIỂN ỨNG DỤNG PYTHON Tên bài tập :
SỬ DỤNG GIAO DIỆN ĐỒ H伃⌀A TKINTER V䄃 THƯ VIỆN XỬ LÝ ẢNH
OPENCV2 ĐỂ VIẾT GIAO DIỆN GUI SINH MÃ QR CODE Sinh viên thực hiện : + Ma Doãn Huy Hùng + Ma Doãn Huy Hậu + Hoàng Minh Đạt + Nguyễn Văn Phúc + Lâm Hữu Quốc Chương I: Tổng quan
1. Tổng quan về tkinter trong Python lOMoAR cPSD| 45349271
1.1. Tkinter trong Python là gì?
Tkinter là một thư viện trong ngôn ngữ lập trình Python được sử dụng để tạo
giao diện đồ họa người dùng (GUI). "Tkinter" là viết tắt của "Tk interface,",
một toolkit đồ họa cung cấp các công cụ để phát triển giao diện người dùng.
Tkinter là một phần của thư viện tiêu chuẩn của Python và đã được tích hợp sẵn
trong hầu hết các cài đặt Python. Điều này giúp cho Tkinter trở thành một lựa
chọn phổ biến cho việc phát triển ứng dụng với giao diện đồ họa đơn giản trong Python.
Một số đặc điểm của Tkinter bao gồm khả năng tạo các thành phần giao diện
như cửa sổ, nút, ô văn bản, và các widget khác để tương tác với người dùng.
Tkinter cung cấp cả các sự kiện và phương thức để xử lý tương tác người dùng
và thay đổi trạng thái của ứng dụng.
2. Tổng quan về OPENCV
2.1 Khái niệm OpenCV là gì?
OpenCV là tên viết tắt của open source computer vision library – có thể được hiểu là một thư
viện nguồn mở cho máy tính. Cụ thể hơn OpenCV là kho lưu trữ các mã nguồn mở được dùng
để xử lý hình ảnh, phát triển các ứng dụng đồ họa trong thời gian thực.
OpenCV cho phép cải thiện tốc độ của CPU khi thực hiện các hoạt động real time. Nó còn cung
cấp một số lượng lớn các mã xử lý phục vụ cho quy trình của thị giác máy tính hay các learning machine khác.
Thư viện OpenCV được phát hành với giấy phép BDS. Do đó các dịch vụ nó cung cấp là hoàn
toàn miễn phí và được hạn chế tối đa các rào cản thông thường. Cụ thể, bạn được phép sử dụng
phần mềm này cho cả hoạt động thương mại lẫn phi thương mại. OpenCV sở hữu giao diện
thiên thiện với mọi loại ngôn ngữ lập trình, ví dụ như C++, C, Python hay Java… Ngoài ra, nó
cũng dễ dàng tương thích với các hệ điều hành khác nhau, bao gồm từ Windows, Linux, Mac
OS, iOS cho đến cả Android.
Kể từ lần đầu xuất hiện từ năm 1999, giờ đây OpenCV đã sở hữu đội ngũ người dùng hùng
hậu, con số ước tính có thể lên tới 47.000 người. Tất cả là nhờ những ưu điểm vượt trội của OpenCV.
2.2 Các module được dùng trong OpenCV là gì? lOMoAR cPSD| 45349271
OpenCV có cấu trúc module, tức là nó bao gồm cả những thư viện liên kết tĩnh
lẫn thư viện liên kết động. Nắm rõ các module của OpenCV sẽ giúp bạn đọc hoàn
toàn thấu hiểu OpenCV là gì.
+ Core functionality (core): Module này sở hữu cơ chế rất nhỏ gọn. Nó được
dùng để định hình các cấu trúc của cơ sở dữ liệu cơ bản, bao gồm cả những
mảng đa chiều. Ngoài ra nó còn xác định các chức năng của những module đi kèm khác nữa.
+ Image Processing (imgproc): Đây là module được dùng cho quá trình xử lý
hình ảnh. Nó cho phép người dùng thực hiện các hoạt động như lọc hình ảnh
tuyến tính và phi tuyến, thực hiện phép biến hình, thay đổi không gian màu,
xây dựng biểu đồ và rất nhiều thao tác khác liên quan.
+ Video Analysis (video): Giống như tên gọi của nó, module này cho phép phân
tích các video. Kết quả được trả về bao gồm các ước tính chuyển động, thực
hiện tách nền và các phép toán theo dõi vật thể.
+ Camera Calibration and 3D Reconstruction (calib3d): Module này cung cấp
các thuật toán hình học đa chiều cơ bản và hiệu chuẩn máy ảnh single và stereo.
Ngoài ra nó còn đưa ra các dự đoán kiểu dáng của đối tượng và sử dụng thuật
toán thư tín âm thanh nổi cùng các yếu tố tái tạo 3D.
+ 2D Features Framework (features2d): Module này giúp phát hiện các tính
năng nổi trội của bộ nhận diện, bộ truy xuất thông số và thông số đối chọi.
+ Ngoài ra còn có rất nhiều module khác với đa dạng tính năng, ví dụ như:
FLANN, Google test wrapper… 2.3 Ứng dụng của OpenCV là gì?
OpenCV được cho là một phần mềm đa nhiệm. Nó được ứng dụng trong rất nhiều trường hợp
khác nhau. Ví dụ, ta sẽ nói về các phần mềm định vị, bản đồ nói chung. Hẳn rằng trong chúng
ta ai cũng đã có ít nhất một lần cần sử dụng đến các map online đúng không. Bạn sử dụng các
map để tìm đường, tra cứu tình hình giao thông hoặc đơn giản là xem xét các hình ảnh thực tế
của địa điểm cần đến. Những lúc như vậy, OpenCV đóng vai trò là nhà cung cấp dữ liệu hình
ảnh cho các app về Map này. OpenCV sẽ đem đến cho người dùng hình ảnh về đường phố hay
các căn nhà, con người xung quanh địa điểm được chỉ định.
OpenCV còn được dùng để khởi tạo ra những hình ảnh 3 chiều phức tạp. Hoạt động này rất
được yêu thích, nhất là trong thời đại trí tuệ nhân tạo AI phát triển như thế này.
Đối với các công nghệ hiện đại, OpenCV cũng là một yếu tố không thể thiếu. Tất cả những ứng
dụng công nghệ như robot, xe tự lái, bảng cảm ứng thông minh… đều có sự góp mặt của
OpenCV trong khâu xử lý hình ảnh. Ví dụ gần gũi nhất trong cuộc sống có thể kể đến hệ thống
mở khóa điện thoại bằng cách nhận diện khuôn mặt người dùng lOMoAR cPSD| 45349271
Chương II: Tổng quan về QR code 1. QR code là gì?
QR Code (mã QR) là viết tắt của Quick response code (Tạm dịch: Mã phản hồi nhanh), hoặc
có thể gọi là Mã vạch ma trận (Matrix-barcode) hay Mã vạch 2 chiều (2D). Đây là một dạng
thông tin được mã hóa để hiển thị sao cho máy có thể đọc được.
QR Code xuất hiện lần đầu tiên vào năm 1994, được tạo ra bởi Denso Wave (công ty con của
Toyota). QR Code bao gồm những chấm đen và ô vuông mẫu trên nền trắng, có thể chứa
những thông tin như URL, thời gian, địa điểm của sự kiện, mô tả, giới thiệu một sản phẩm nào đó,...
QR Code cho phép quét và đọc mã nhanh hơn bằng các thiết bị như máy đọc mã vạch hoặc
điện thoại có camera với ứng dụng cho phép quét mã, vô cùng tiện lợi cho người dùng.
2. Ưu, nhược điểm của QR code: * Ưu điểm: + Tính thẩm mỹ
QR Code chiếm ít không gian hơn rất nhiều so với mã vạch truyền thống. Nếu in trên sản
phẩm hoặc danh thiếp thì sẽ nhỏ gọn và tăng tính thẩm mỹ hơn.
+ Tiện lợi truy xuất thông tin sản phẩm và thanh toán online
Bạn có thể thường xuyên nhìn thấy mã này trên các sản phẩm mình sử dụng. Doanh nghiệp
thường đặt QR Code để người dùng có thể quét mã và truy xuất các thông tin về sản phẩm
như nơi sản xuất, loại sản phẩm, thành phần sản phẩm, các danh mục liên quan,...Không chỉ
thế, ngày nay mã QR còn được dùng để thanh toán online rất tiện lợi.
+ Trao đổi thông tin liên lạc nhanh chóng
QR Code cũng có thể được sử dụng để trao đổi các thông tin và phương thức liên lạc. Bạn chỉ
cần quét mã và xem giới thiệu về một doanh nghiệp hoặc số điện thoại hay địa chỉ của một
người nào đó. Chẳng hạn như bạn hoàn toàn có thể tìm kiếm bạn bè trên các mạng xã hội như
Facebook, TikTok,Zalo,Instagram... một cách nhanh chóng thông qua mã QR mà các nhà
phát triển nền tảng đó cung cấp cho bạn. * Nhược điểm:
+ Không có thông tin thay thế để tra cứu nếu hình ảnh QR bị lỗi.
+ Dễ bị sử dụng để làm giả/chứa liên kết độc hại, người dùng cần cảnh giác khi quét mã QR từ nguồn không tin cậy.
+ Mã QR thường yêu cầu kết nối internet để truy cập thông tin hoặc tài liệu mà nó trỏ đến. lOMoAR cPSD| 45349271
Chương III: Phần mềm tạo QR code
1. Mô tả phần mềm:
- Phần mềm hỗ trợ người dùng tạo mã QR từ thông tin cụ thể như văn bản, đường dẫn, vị
trí,... Người dùng nhập các thông tin trên vào phần nhập thông tin và chọn chức năng tạo QR
code, khi tạo thành công mã QR sẽ được lưu vào máy và hiển thị lên màn hình.
- Người dùng có thể quét mã QR trực tiếp hoặc gửi cho người khác quét để truy cập thôngtin.
2. Thiết kế chương trình: - thêm thư viện:
+ openvc2, pillow: để xử lý hình ảnh.
+tkinter: để thiết kế giao diện. + qrcode: để tạo QRcode.
- Tạo hàm tạo QR và lưu ảnh vào bộ nhớ
- Hàm xử lý khi bấm nút sinh QR lOMoAR cPSD| 45349271
- Hàm hiển thị mã QR sau khi tạo thành công
3. Giao diện chương trình:
-Giao diện chương trình lOMoAR cPSD| 45349271
-Giao diện chương trình sau khi tạo QR lOMoAR cPSD| 45349271
- Đoạn chương trình này để tạo giao diện của chương trình tạo QRcode