Browse Source

上傳檔案到 'coffee_linescan'

fatwolf 3 years ago
parent
commit
088666fa1d

+ 114 - 0
coffee_linescan/coffee_linescan1(1time1000pic).py

@@ -0,0 +1,114 @@
+import cv2
+import numpy as np
+import matplotlib.pyplot as plt
+import imutils
+from collections import defaultdict
+#import datetime
+
+#start = datetime.datetime.now()
+import time
+start = time.process_time()
+def makepic():
+    count = 1000
+    for x in range(count):
+        img = np.ones((1,60),dtype=np.uint8)
+        img[0,range(0,20)]=250
+        img[0,range(20,40)]=30
+        img[0,range(40,60)]=250
+        filename = 'make' + str(x) + '.bmp'
+        print(filename)
+        cv2.imwrite(filename, img)
+
+
+
+
+def detectionpic():
+    image = cv2.imread("make0.bmp")
+    image2 = cv2.imread("make1.bmp")
+    image_v = cv2.vconcat([image, image2])  # 垂直組合
+
+    count = 998
+    for x in range(count):
+        # 讀取圖檔
+        filename = 'make' + str(int(x * 1)) + '.bmp'
+        print(filename)
+        image = cv2.imread(filename)
+        image_v = cv2.vconcat([image_v, image])
+        cv2.imwrite("total.bmp", image_v)
+    # 讀取圖檔
+    filename = 'total.bmp'
+    image = cv2.imread(filename)
+    # 轉為灰階
+    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
+
+    # 模糊化圖片
+    blurred = cv2.GaussianBlur(gray, (11, 11), 0)
+    cv2.imshow('Blur',blurred)
+    cv2.waitKey(0)
+
+    # Canny 尋找邊緣
+    edged = cv2.Canny(blurred, 30, 150)
+    cv2.imshow('Edged',edged)
+    cv2.waitKey(0)
+
+    # findContour 確定輪廓
+    _,contours, hierarchy = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
+    img2 = image.copy()
+    cv2.drawContours(img2, contours, -1, (0, 255, 0), 2)
+    cv2.imshow('contour',img2)
+    cv2.imwrite('check.bmp',img2)
+    cv2.waitKey(0)
+
+    cnt = contours[0]
+
+    #contourArea 計算面積
+    area = cv2.contourArea(cnt)  #計算面積
+    perimeter = cv2.arcLength(cnt,True)    #計算周長
+
+    if area < 19119:
+        print('破損豆噴調',area)
+    else:
+        pass
+    print('面積:',area, '周長:',perimeter)  #印出結果
+    '''
+    p = 0
+    d = 0
+    tt = np.array(gray[0])
+    print(tt)
+    count = len(tt)
+    print(len(tt))
+    
+    for i in tt[:]:
+        if i >= 150:
+            p = p + 1
+        elif i <= 130:
+            d = d + 1
+    print('要得豆子像素:',p)
+    print('壞的豆子像素:',d)
+
+    coffeebean = (d / count)*100
+    print('壞豆佔全部百分比:',coffeebean)
+    if coffeebean > 60:
+        record = record + 1
+        print('紀錄次數:', record)
+    else:
+        pass
+    if record == 50:
+        j = 1
+        # record=0
+        print('噴嘴啟動')
+        # break
+        # continue
+'''
+#makepic()
+detectionpic()
+#end = datetime.datetime.now()
+#print("執行時間:", end - start)
+# 結束測量
+end = time.process_time()
+# 輸出結果
+print("執行時間:%f 秒" % (end - start))
+
+
+
+

+ 53 - 0
coffee_linescan/coffee_linescan2(1000time1pic).py

@@ -0,0 +1,53 @@
+import cv2
+import numpy as np
+import matplotlib.pyplot as plt
+import imutils
+#import datetime
+#start = datetime.datetime.now()#
+import time
+start = time.process_time()
+
+
+count = 1000
+record = 0
+for x in range(count):
+    img = np.ones((1, 60), dtype=np.uint8)
+    img[0, range(0, 20)] = 30
+    img[0, range(20, 40)] = 125
+    img[0, range(40, 60)] = 250
+    filename = 'make' + str(x) + '.bmp'
+    print(filename)
+    cv2.imwrite(filename, img)
+
+    # 讀取圖檔
+    image = cv2.imread(filename)
+    # 轉為灰階
+    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
+
+    p = 0
+    d = 0
+    tt = np.array(gray[0])
+    count = len(tt)
+
+
+    for i in tt[:]:
+        if i >= 150:
+            p = p + 1
+        elif i <= 130:
+            d = d + 1
+    print('要得豆子像素:', p)
+    print('壞的豆子像素:', d)
+    coffeebean = (d / count) * 100
+    print('壞豆佔全部百分比:', coffeebean)
+    if coffeebean > 60:
+        record = record + 1
+        print('紀錄次數:', record)
+
+    if record == 50:
+        j = 1
+        print('噴嘴啟動')
+
+# 結束測量
+end = time.process_time()
+# 輸出結果
+print("執行時間:%f 秒" % (end - start))