瀏覽代碼

上傳檔案到 'coffee_linescan'

fatwolf 3 年之前
父節點
當前提交
4446db295f
共有 1 個文件被更改,包括 142 次插入0 次删除
  1. 142 0
      coffee_linescan/coffee_linescan1(1time1000pic).py

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

@@ -0,0 +1,142 @@
+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 = 11
+    for x in range(count):
+        img = np.ones((1, 60), dtype=np.uint8)
+        img[0, range(0, 20)] = 250
+        img[0, range(20, 40)] = 250
+        img[0, range(40, 60)] = 250
+        filename = 'make' + str(x) + '.bmp'
+        #print(filename)
+        cv2.imwrite(filename, img)
+
+    for x in range(11, 18):
+        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)
+
+    count = 968
+    for x in range(18, 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)
+
+    for x in range(968, 1000):
+        img = np.ones((1, 60), dtype=np.uint8)
+        img[0, range(0, 20)] = 250
+        img[0, range(20, 40)] = 250
+        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))
+
+
+
+