1. Trang chủ
  2. » Tất cả

(Đồ án hcmute) nghiên cứu và ứng dụng machine vision phát hiện sản phẩm lỗi trong công nghiệp

104 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

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 ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA NGHIÊN CỨU VÀ ỨNG DỤNG MACHINE VISION PHÁT HIỆN SẢN PHẨM LỖI TRONG CÔNG NGHIỆP GVHD:NGUYỄN TỬ ĐỨC SVTH: PHẠM HOÀNG VIỆT MSSV: 16151103 SKL 0 7 Tp Hồ Chí Minh, tháng 08/2020 an 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 NGHIÊN CỨU VÀ ỨNG DỤNG MACHINE VISION PHÁT HIỆN SẢN PHẨM LỖI TRONG CƠNG NGHIỆP SVTH: PHẠM HỒNG VIỆT MSSV: 16151103 Khoá: K16 Ngành: CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA GVHD: THS NGUYỄN TỬ ĐỨC Tp Hồ Chí Minh, tháng năm 2020 an 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 NGHIÊN CỨU VÀ ỨNG DỤNG MACHINE VISION PHÁT HIỆN SẢN PHẨM LỖI TRONG CƠNG NGHIỆP SVTH: PHẠM HỒNG VIỆT MSSV: 16151103 Khố: K16 Ngành: CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA GVHD: THS NGUYỄN TỬ ĐỨC Tp Hồ Chí Minh, tháng năm 2020 an 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 27 tháng 07 năm 2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Phạm Hồng Việt MSSV: 16151103 Ngành: Cơng nghệ kỹ thuật Điều khiển Tự động hóa Lớp: 16151CL1 Giảng viên hướng dẫn: Ths Nguyễn Tử Đức ĐT: 0908 550 450 Ngày nhận đề tài: 24/02/2020 Ngày nộp đề tài: 27 tháng năm 2020 Tên đề tài: Nghiên cứu ứng dụng Machine Vision phát sản phẩm lỗi công nghiệp Các số liệu, tài liệu ban đầu: Nội dung thực đề tài: - Tìm hiểu nghiên cứu hệ thống Machine Vision cơng nghiệp Tìm hiểu giải thuật xủ lý ảnh máy học cho toán nhận dạng phân loại ảnh - Tìm hiểu máy tính nhúng, cách cài đặt cấu hình phục vụ cho Computer Vision Deep Learning - Áp dụng giải thuật xủ lý ảnh mơ hình Deep Learning xây dựng vào hệ thống Machine Vison phát sản phẩm lỗi Sản phẩm - Hệ thống Machine Vision hoàn chỉnh - Chương trình phát sản phẩm lỗi - Quyển báo cáo đồ án tốt nghiệp - Đĩa CD TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN i an CỘNG HOÀ 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ọ tên Sinh viên: Phạm Hoàng Việt MSSV: 16151103 Ngành: Công nghệ Kỹ thuật điều khiển Tự động hóa Tên đề tài: Nghiên cứu ứng dụng Machine Vision phát sản phẩm lỗi công nghiệp Họ tên Giáo viên hướng dẫn: Ths Nguyễn Tử Đức 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? Đánh giái loại: Điểm: (Bằng chữ: ……… … ) Tp Hồ Chí Minh, ngày… tháng năm 2020 Giáo viên hướng dẫn (Ký & ghi rõ họ tên) ii an CỘNG HOÀ 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ọ tên Sinh viên: Phạm Hồng Việt MSSV: 16151103 Ngành: Cơng nghệ Kỹ thuật điều khiển Tự động hóa Tên đề tài: Nghiên cứu ứng dụng Machine Vision phát sản phẩm lỗi công nghiệp Họ 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? Đánh giái loại: Điểm: (Bằng chữ:………… ) Tp Hồ Chí Minh, ngày… tháng năm 2020 Giáo viên phản biện (Ký & ghi rõ họ tên) iii an LỜI CẢM ƠN Đồ án tốt nghiệp xem môn học cuối sinh viên chúng em Quá trình thực đồ án giúp đỡ em tổng hợp tất kiến thức học trường suốt năm qua Đây thời gian quý giá để em làm quen với cơng tác thiết kế, tập giải vấn đề mà em gặp tương lai Qua đồ án sinh viên chúng em trưởng thành để trở thành kỹ sư chất lượng phục vụ tốt cho dự án, hệ thống sản xuất nhà máy, xí nghiệp Có thể coi cơng trình nhỏ đầu tay sinh viên trường Trong địi hỏi người sinh viên phải nỗ lực khơng ngừng học hỏi Để hoàn thành tốt đồ án trước hết nhờ sự quan tâm bảo tận tình thầy, cô hướng dẫn với chỗ dựa tinh thần, vật chất gia đình sự giúp đỡ nhiệt tình bạn Em xin chân thành cảm ơn thấy Nguyễn Tử Đức thầy cô Khoa Đào Tạo Chất Lượng Cao Trường Đại Học Sư Phạm Kỹ Thuật TPHCM nói chung thầy chun ngành Công nghệ Kỹ thuật điều khiển Tự động hóa nói riêng hướng dẫn tận tình giúp em hoàn thành đề tài đồ án giao môn học trước Mặc dù cố gắng q trình thực chưa có kinh nghiệm quỹ thời gian hạn chế nên chắn cịn nhiều sai sót Em kính mong sự dẫn thêm nhiều từ thầy cô Em xin chân thành cảm ơn iv an TÓM TẮT Những năm gần chứng kiến sự tiến đáng kinh ngạc ngành công nghiệp sản xuất cách thay đổi hầu hết nguồn lực người máy móc cơng nghệ tân tiến trí tuệ nhân tạo, thị giác máy tính hay máy học Trong đề tài này, tơi trình bày hệ thống Machine Vision phát sản phẩm lỗi công nghiệp Đây hệ thống điều khiển giải thuật xử lý ảnh mạng thần kinh nhân tạo Ảnh lấy từ camera sau đưa qua chương trình xử lý ảnh mơ hình mạng thần kinh thu kết sản phẩm bình thường bị lỗi Kết thử nghiệm hệ thống cho thấy tính hiệu tin cậy nhiệm vụ phát sản phẩm bị lỗi sản xuất Tốc độ xử lý hệ thống đạt 1.5-2 giây/sản phẩm điều kiện ánh sáng cố định, thấp so với thực tế hệ thống khơng sử dụng camera máy tính nhúng công nghiệp v an MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii LỜI CẢM ƠN iv TÓM TẮT v MỤC LỤC vi DANH MỤC TỪ VIẾT TẮT ix DANH MỤC CÁC BẢNG BIỂU .x DANH MỤC CÁC HÌNH ẢNH VÀ BIỂU ĐỒ xi Chương .1 1.1 Giới thiệu .1 1.2 Tổng quan machine vision công nghiệp 1.3 Mục tiêu đề tài .2 1.4 Đối tượng phạm vi nghiên cứu 1.5 Phương pháp nghiên cứu .3 1.6 Nội dung đề tài Chương .5 2.1 Giới thiệu hệ thống Machine Vision .5 2.1.1 Giới thiệu Machine Vision 2.1.2 Các ứng dụng Machine Vision công nghiệp Smart Factory 2.2 Tổng quan lý thuyết xử lý ảnh 15 2.2.1 Giới thiệu xử lý ảnh 15 2.2.2 Các trình xử lý ảnh 16 2.2.3 Các vấn đề xử lý ảnh .18 2.2.4 Phạm vi ứng dụng xử lý ảnh 21 2.2.5 Giới thiệu thư viện OpenCV (Open Source Computer Vision) 23 2.3 Tổng quan trí tuệ nhân tạo 26 vi an 2.3.1 Trí tuệ nhân tạo .26 2.3.2 Machine Learning 27 2.4 Deep Learning .29 2.4.1 Các thư viện framework cho Deep Learning 31 Chương 36 3.1 Xử lý ảnh .36 3.1.1 Tiền xử lý ánh .36 3.1.2 Nhận dạng ảnh 38 3.2 Mạng nơron tích chập 38 3.2.1 Giới thiệu 38 3.2.2 Cấu trúc mạng nơ ron tích chập .38 3.2.3 Lớp tích chập 39 3.2.4 Hàm kích hoạt .41 3.2.5 Lớp pooling 42 3.2.6 Lớp kết nối đầy đủ 43 3.3 Kiến trúc mạng tổng thông số mơ hình 44 3.3.1 Pre-trained Model VGG16 44 3.3.2 Học chuyển giao fine-tuning 45 3.4 Tối ưu hóa mạng cần thiết .51 3.4.1 Các loại Gradient Descent 51 3.4.2 Các loại tối ưu hóa 52 3.5 Lưu đồ hệ thống Machine Vision nhận biết sản phẩm lỗi với xử lý ảnh mơ hình huấn luyện 55 Chương 57 4.1 Thành phần phần cứng 57 4.1.1 Camera Logitech C270 57 4.1.2 Cảm biến vật cản hồng ngoại 58 4.1.3 NVIDIA Jetson Nano Developer Kit 59 4.1.4 Mạch Opto Cách Ly Kênh TLP281 63 vii an Hình 5.10 Thay đổi độ xác suốt trình đào tạo Hình 5.11 Thay đổi độ mát suốt trình đào tạo 74 an 5.4 Kết thực nghiệm Sau đào tạo máy tính, mơ hình chép trở lại Jetson Nano Sau đưa vào hệ thống Machine Vision thiết kế từ trước chạy đồng thời PLC, hệ thống bang tải cấu chấp hành, sau cảm biến phát vật khoảng thời gian từ lúc camera chụp hình đến lúc xử lý xong ảnh ~1.5-2s/sp Do camera máy tính nhúng khơng phải dùng cho cơng nghiệp nên tốc độ xử lý khơng lý tưởng Hình ảnh thử nghiệm cho dự đốn mơ hình nhìn thấy hình 5.12 Mơ hình đào tạo đạt độ xác gần tuyệt đối, hệ thống hoạt động với yêu cầu đặt phát sản phẩm lỗi vết móp nằm phía lon Hình 5.12 Kết thực nghiệm: Trên hình ảnh phía đầu sau thơng qua chức Softmax mơ hình (a) Bình thường, (b) Móp đầu, (c) Móp trên, (d) Móp Hình 5.13 Kết nhận diện lon lỗi với xử lý ảnh: (a) Móp bên, (b) Móp dưới, (c) Móp trên, (d) Móp đầu 75 an Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Trong đề tài này, tơi trình bày hệ thống Machine Vision phát sản phẩm lỗi dựa phương pháp xử lý ảnh công nghệ AI tiên tiến Công việc giải nhiều vấn đề có sản xuất mà không cần đến giác quan người Có hai phương pháp sử dụng luận án này: Xử lý tín hiệu ảnh mơ hình Phát đối tượng (độ xác đào tạo: 98%) Tôi định kết hợp hai phương pháp lại với để tăng độ xác, đồng thời giảm đáng kể thời gian xử lý từ lúc chụp đến lúc xuất tín hiệu Kết đáng khích lệ cho thấy mơ hình mạng thần kinh tích chập hoạt động tốt với việc xử lý liệu thời gian thực Bất chấp sự phức tạp mạng lưới thần kinh, tảng điện toán nhúng Raspberry Pi hay NVIDIA Jetson Nano Kit đủ mạnh để hỗ trợ tầm nhìn ứng dụng điều khiển thời gian thực dựa học tập sâu Do sự phức tạp mạng, máy tính nhúng xử lý mơ hình, cần thêm mơ hình để xử lý tác vụ khác cần đến máy tính nhúng thứ hai Vấn đề chúng quan sát thấy việc kiểm tra mạng độ trễ camera Nó định nghĩa khoảng thời gian từ cảm biến phát vật đến lúc máy tính thực sự đọc liệu hình ảnh số hóa Thật khơng may, thời gian dài đáng kể tùy thuộc vào máy ảnh hiệu suất Jetson, khoảng 100-120 mili giây Điều cao đáng kể so với độ trễ nhận thức người, biết nhanh mili giây Độ trễ camera cao ảnh hưởng tiêu cực đến hiệu suất điều khiển, đặc biệt ứng dụng quan trọng an tồn, mạng lưới thần kinh sâu phân tích cảnh cũ Có nhiều lĩnh vực khám phá để đẩy dự án xa thu kết chí thuyết phục Trong tương lai, tơi tiếp tục nghiên cứu cách để đạt độ xác dự đốn tốt việc đào tạo mạng, xác định sử dụng camera có độ trễ thấp, tăng them khả nhận dạng đa dạng máy tính với liệu lớn Hơn nữa, tiếp tục nghiên cứu, mở rộng phạm vi ứng dụng hệ thống Machine Vision việc phân loại để hạn chế tối thiểu tác động người đến khu vực sản xuất, nhằm đảm bảo an tồn tối ưu hóa sản lượng 76 an TÀI LIỆU THAM KHẢO Tiếng Việt [1] [2] Vũ Hữu Tiệp.” Machine Learning Co Ban” Nha xuat ban Khoa Hoc va Ky Thuat Nguyễn Thanh Tuấn (2019) “Deep Learning Cơ Bản” Ebook Tiếng Anh [3] [4] [5] [6] [7] [8] [9] LeCun, Y., Boser, B., Denker, J S., Henderson, D., Howard, R E., Hubbard, W., & Jackel, L D (1989) “Backpropagation applied to handwritten zip code recognition Neural computation”, 1(4), pp 541-551 Krizhevsky, A., Sutskever, I., & Hinton, G E (2012) “Imagenet classification with deep convolutional neural networks In Advances in neural information processing systems” , pp 1097-1105 N Otterness, M Yang, S Rust, E Park, J H Anderson, F D Smith, Berg, and S Wang (2017).” An Evaluation of the NVIDIA TX1 for Supporting Real-Time Computer-Vision Workloads In IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)”, pages 353–364 IEEE, Srikanth Tammina (2019) “Transfer learning using VGG-16 with Deep Convolutional Neural Network for Classifying Images” ISSN 2250-3153 Aurélien Géron (2019) “Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow” O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, pages 431-469 Ding, Zhengming, and Yun Fu (2016) "Robust Transfer Metric Learning for Image Classification." IEEE Transactions on Image Processing T.R Padmannabhan “Programming with Python” Springer 77 an PHỤ LỤC Phụ lục 1: Chương trình huấn luyện mơ hình nhận dạng #Import packages from keras.applications.vgg16 import VGG16 from keras.preprocessing import image from keras.preprocessing.image import ImageDataGenerator from keras.layers import Dense, Conv2D, MaxPool2D , Flatten from keras.applications.vgg16 import preprocess_input from keras.layers import Dense import numpy as np import keras from keras import models, layers, optimizers from keras.callbacks import TensorBoard import os, glob from sklearn.model_selection import train_test_split from keras.utils import np_utils from keras import backend as K import os import matplotlib.pyplot as plt from keras.callbacks import TensorBoard vgg_conv = VGG16(weights='imagenet', include_top=False, input_shape=(224, 22 4, 3)) # Freeze the layers except the last layers for layer in vgg_conv.layers[:-8]: layer.trainable = False # Check the trainable status of the individual layers # for layer in vgg_conv.layers: # Create the model 78 an model = models.Sequential() # Add the vgg convolutional base model model.add(vgg_conv) # model.add(Conv2D(input_shape=(224,224,3),filters=16,kernel_size=(3,3),paddin g="same", activation="relu")) # model.add(MaxPool2D(pool_size=(2,2),strides=(2,2))) # model.add(Conv2D(filters=32,kernel_size=(3,3),padding="same", activation="rel u")) # model.add(MaxPool2D(pool_size=(2,2),strides=(2,2))) # model.add(Conv2D(filters=64, kernel_size=(3,3), padding="same", activation="re lu")) # model.add(MaxPool2D(pool_size=(2,2),strides=(2,2))) # model.add(Conv2D(filters=126, kernel_size=(3,3), padding="same", activation=" relu")) # model.add(MaxPool2D(pool_size=(2,2),strides=(2,2))) # model.add(Conv2D(filters=256, kernel_size=(3,3), padding="same", activation=" relu")) # model.add(MaxPool2D(pool_size=(2,2),strides=(2,2))) # model.add(Conv2D(filters=512, kernel_size=(3,3), padding="same", activation=" relu")) # model.add(MaxPool2D(pool_size=(2,2),strides=(2,2))) # Add new layers model.add(layers.Flatten()) model.add(layers.Dense(128, activation='relu')) model.add(layers.Dense(2, activation='softmax')) # Show a summary of the model Check the number of trainable parameters model.summary() train_datagen = ImageDataGenerator(rescale=1./255, horizontal_flip=True) 79 an validation_datagen = ImageDataGenerator(rescale=1./255, horizontal_flip=True) # Change the batchsize according to your system RAM train_batchsize = val_batchsize = image_size = 224 logsdir = os.path.join(os.getcwd(),"logs_0410") train_dir = "D:\\Do an\\Dataset\\data\\train\\" validation_dir = "D:\\Do an\\Dataset\\data\\test\\" train_generator = train_datagen.flow_from_directory( train_dir, target_size=(image_size, image_size), batch_size=train_batchsize, class_mode='categorical') validation_generator = validation_datagen.flow_from_directory( validation_dir, target_size=(image_size, image_size), batch_size=val_batchsize, class_mode='categorical', shuffle=False) checkpoint_path = os.path.join(logsdir, "{epoch:04d}.h5") tensorboard = [TensorBoard(log_dir=logsdir, histogram_freq=0, write_graph=True, write_images=False), keras.callbacks.ModelCheckpoint(checkpoint_path, verbose=0, save_best_only=False, save_weights_only=False),] # Compile the model model.compile(loss='categorical_crossentropy', 80 an optimizer=optimizers.Adam(lr=1e-5), metrics=['acc']) # Train the model history = model.fit_generator( train_generator, steps_per_epoch=train_generator.samples/train_generator.batch_size , epochs=20, validation_data=validation_generator, validation_steps=validation_generator.samples/validation_generator batch_size, verbose=1, callbacks=tensorboard) acc = history.history['acc'] val_acc = history.history['val_acc'] loss = history.history['loss'] val_loss = history.history['val_loss'] epochs = range(len(acc)) #Show plots plt.plot(epochs, acc, 'b', label='Training acc') plt.plot(epochs, val_acc, 'r', label='Validation acc') plt.title('Training and validation accuracy') plt.legend() plt.figure() plt.plot(epochs, loss, 'b', label='Training loss') plt.plot(epochs, val_loss, 'r', label='Validation loss') plt.title('Training and validation loss') plt.legend() plt.show() 81 an Phụ lục 2: Chương trình chạy mơ hình xử lý ảnh phát lỗi #Import Pakages import keras import cv2 import numpy as np import time import keras import os from keras.models import load_model from keras.preprocessing.image import ImageDataGenerator from matplotlib import pyplot as plt import matplotlib matplotlib.use('TkAgg') def findContours(img, numberOfContours, reverse = True): # tìm đường biên o bj # if dim(img) == 3: # raise Exception "The function should be give channel but got channels" #cv2.CHAIN_APPROX_SIMPLE or cv2.CHAIN_APPROX_NONE contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_AP PROX_SIMPLE) # reverse = True : Sort follow max area If False, sort follow area contours = sorted(contours, key = cv2.contourArea, reverse = reverse)[:numberO fContours] return contours def segmentation(img): 82 an img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # chuyển thành ảnh g ray img_sub = cv2.subtract(img[:,:,0], img_gray) # lấy kênh red - ảnh gray img_sub[:100,:] = 255 #ret, img_bw = cv2.threshold(img_sub, 0, 255, cv2.THRESH_BINARY_INV + c v2.THRESH_OTSU) ret, img_bw = cv2.threshold(img_sub, 20, 255, cv2.THRESH_BINARY_INV) kernel = np.ones((7,7),np.uint8) img_bw = cv2.dilate(img_bw ,kernel,iterations = 3) contours = findContours(img_bw, 1) # tìm đường bao x_min, y_min, w, h = cv2.boundingRect(contours[0]) return img_bw, x_min, y_min, w, h def predict_img(img, model, threshold): img_bw, x_min, y_min, w, h = segmentation(img) img_obj = img[y_min - 10: y_min + 830, x_min - 20: x_min + 400] idx_left = np.where(img_bw[y_min + 100: y_min+750, x_min + 20 : x_min + 21 ] == 0) idx_right = np.where(img_bw[y_min + 100: y_min+750, x_min - 20 + w: x_min + w - 19] == 0) if len(idx_left[0]) > 150 or len(idx_right[0]) > 150: print("Defective Can") print(len(idx_left[0]), len(idx_right[0])) return False if img_obj.shape[0] != img_obj.shape[1]*2: img_obj = cv2.resize(img_obj, (420, 840)) #bot print(img_obj.shape) 83 an img = img_obj[420: 840, :] img = cv2.resize(img, (224, 224)) img = img*1./255 img = img.reshape(-1,224,224,3) output = model.predict(img) # [[0.3, 0.7]] if output[0][1] < threshold: return False #mid img = img_obj[210: 630, :] img = cv2.resize(img, (224, 224)) img = img*1./255 img = img.reshape(-1,224,224,3) output = model.predict(img) if output[0][1] < threshold: return False #top img = img_obj[0: 420, :] img = cv2.resize(img, (224, 224)) img = img*1./255 img = img.reshape(-1,224,224,3) output = model.predict(img) if output[0][1] < threshold: return False return True model = load_model("0012.h5") img = cv2.imread("virtual.jpg") 84 an img = img*1./255 img = img.reshape(-1,224,224,3) _ = model.predict(img) print("Loaded model") import sys sys.path.append('/opt/nvidia/jetson-gpio/lib/python/') sys.path.append('/opt/nvidia/jetson-gpio/lib/python/Jetson/GPIO') import RPi.GPIO as GPIO import time # Pin Definitions #output_pin = 18 # BOARD pin 12, BCM pin 18 # Pin Setup: # Board pin-numbering scheme GPIO.setmode(GPIO.BCM) # set pin as an output pin with optional initial state of HIGH GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(23, GPIO.IN) # set pin as an input pin path = "/home/phamviet/Desktop/DATN/loi" files = [i for i in os.listdir(path) if i.endswith(".jpg")] n=0 cap_1 = cv2.VideoCapture(0) # camera cap_2 = cv2.VideoCapture(1) # camera try: while(True): start = time.time() 85 an _, image_1 = cap_1.read() _, image_2 = cap_2.read() image_1 = cv2.transpose(image_1,0) image_2 = cv2.transpose(image_2,0) #image_1 = cv2.flip(image_1, 0) if GPIO.input(23) == GPIO.LOW: # tin hieu tu cam bien gui ve cv2.imshow("", cv2.resize(image_1, (240, 320))) if cv2.waitKey(1) == 27: break continue print("Co object") flag_inspection_1 = predict_img(image_1, model, 0.5) flag_inspection_2 = predict_img(image_2, model, 0.5) if flag_inspection_1 and flag_inspection_2: print("Ok") cv2.circle(image_1, (650, 70), 50, (0,255,0), -1) else: print("Defect") GPIO.output(18, GPIO.HIGH) time.sleep(0.5) GPIO.output(18, GPIO.LOW) cv2.circle(image_1, (650, 70), 50, (0,0,255), -1) n=n+1 cv2.imshow("", cv2.resize(image_1, (360, 640))) print("time: ", time.time()- start) if cv2.waitKey(1) == 27: 86 an break finally: GPIO.cleanup() cv2.destroyAllWindows() 87 an S an K L 0 ... CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU VÀ ỨNG DỤNG MACHINE VISION PHÁT HIỆN SẢN PHẨM LỖI TRONG CƠNG NGHIỆP SVTH: PHẠM HỒNG VIỆT MSSV: 16151103 Khoá: K16 Ngành: CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA... tháng năm 2020 an 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 NGHIÊN CỨU VÀ ỨNG DỤNG MACHINE VISION PHÁT HIỆN SẢN PHẨM LỖI TRONG CƠNG NGHIỆP... 27 tháng năm 2020 Tên đề tài: Nghiên cứu ứng dụng Machine Vision phát sản phẩm lỗi công nghiệp Các số liệu, tài liệu ban đầu: Nội dung thực đề tài: - Tìm hiểu nghiên cứu hệ thống Machine Vision

Ngày đăng: 02/02/2023, 09:20

Xem thêm: