123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- 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))
|