今天又啥也沒干 我完蛋了哦 就是沒辦法沉下心來,咋辦。。。。還是先來條NLP吧。。
七,凡事必有至少三個解決方法
對事情只有一個方法的人,必陷入困境,因為別無選擇。
對事情有兩個方法的人也陷入困境,因為他制造了左右兩難,進退維谷的局面給自己。
有第三個方法的人,通常會找到第四,五個方法,甚至更多的方法。
有選擇就是有能力,所以,有選擇總比沒有選擇好。
至今不成功,只是說至今用過的方法都得不到想要的效果。
沒有辦法,只是說已知的辦法都行不通。
世界上尚有很多我們過去沒有想過,或者尚未認識的方法。
只有相信尚有未知的有效方法,才會有機會找到它和使事情改變。
不論什么事情,我們總有選擇的權利,而且不只是一個。
“沒有辦法”使事情畫上句號,“總有辦法”使事情有突破的可能。
“沒有辦法”對你沒有好處,應停止想它;“總有辦法”對你有好處,故應把它留在腦中。
為何不使自己成為第一個找出辦法的人?
額。。。純粹就是今天沒得寫的了,只好丟點以前寫的摳腳程序,也不能叫程序,只能實現功能吧。。。也是東抄點,西抄點,然后一拼來的。。。。。
用的樹莓派3B+ 然后插個usb攝像頭 就行了
文件名:colorList.py 這是顏色庫。。。
1 # -*- coding:UTF-8 -*- 2 import numpy as np 3 import collections 4 5 6 def getColorList(): 7 dict = collections.defaultdict(list) 8 9 # black 10 lower_black = np.array([0, 0, 0]) 11 upper_black = np.array([180, 255, 46]) 12 color_list_black = [] 13 color_list_black.append(lower_black) 14 color_list_black.append(upper_black) 15 dict['black'] = color_list_black 16 17 # gray 18 lower_gray = np.array([0, 0, 46]) 19 upper_gray = np.array([180, 43, 220]) 20 color_list_gray= [] 21 color_list_gray.append(lower_gray) 22 color_list_gray.append(upper_gray) 23 dict['gray'] = color_list_gray 24 25 # white 26 lower_white = np.array([0, 0, 221]) 27 upper_white = np.array([180, 30, 255]) 28 color_list_white = [] 29 color_list_white.append(lower_white) 30 color_list_white.append(upper_white) 31 dict['white'] = color_list_white 32 33 # red 34 lower_red = np.array([156, 43, 46]) 35 upper_red = np.array([180, 255, 255]) 36 color_list_red = [] 37 color_list_red.append(lower_red) 38 color_list_red.append(upper_red) 39 dict['red'] = color_list_red 40 41 # red2 42 43 lower_red = np.array([0, 43, 46]) 44 upper_red = np.array([10, 255, 255]) 45 color_list_red2 = [] 46 color_list_red2.append(lower_red) 47 color_list_red2.append(upper_red) 48 dict['red2'] = color_list_red2 49 50 # orange 51 lower_orange = np.array([11, 43, 46]) 52 upper_orange = np.array([25, 255, 255]) 53 color_list_orange = [] 54 color_list_orange.append(lower_orange) 55 color_list_orange.append(upper_orange) 56 dict['orange'] = color_list_orange 57 58 # yellow 59 lower_yellow = np.array([26, 43, 46]) 60 upper_yellow = np.array([34, 255, 255]) 61 color_list_yellow = [] 62 color_list_yellow.append(lower_yellow) 63 color_list_yellow.append(upper_yellow) 64 dict['yellow'] = color_list_yellow 65 66 # green 67 lower_green = np.array([35, 43, 46]) 68 upper_green = np.array([77, 255, 255]) 69 color_list_green = [] 70 color_list_green.append(lower_green) 71 color_list_green.append(upper_green) 72 dict['green'] = color_list_green 73 74 # cyan 75 lower_cyan = np.array([78, 43, 46]) 76 upper_cyan = np.array([99, 255, 255]) 77 color_list_cyan = [] 78 color_list_cyan.append(lower_cyan) 79 color_list_cyan.append(upper_cyan) 80 dict['cyan'] = color_list_cyan 81 82 # blue 83 lower_blue = np.array([100, 43, 46]) 84 upper_blue = np.array([124, 255, 255]) 85 color_list_blue = [] 86 color_list_blue.append(lower_blue) 87 color_list_blue.append(upper_blue) 88 dict['blue'] = color_list_blue 89 90 # purple 91 lower_purple = np.array([125, 43, 46]) 92 upper_purple = np.array([155, 255, 255]) 93 color_list_purple = [] 94 color_list_purple.append(lower_purple) 95 color_list_purple.append(upper_purple) 96 dict['purple'] = color_list_purple 97 98 return dict 99 100 101 if __name__ == '__main__': 102 color_dict = getColorList() 103 print(color_dict) 104 105 num = len(color_dict) 106 print('num=', num) 107 108 for d in color_dict: 109 print('key=', d) 110 print('value=', color_dict[d][1])
然后是 xf_color.py 這就能識別顏色了 (這是識別已有圖片文件版的) 原理就是用上面的色庫 算出圖片顏色面積 哪個最大 就算是啥顏色。。。摳腳。。。
# -*- coding:UTF-8 -*- import cv2 import colorList def get_color(frame): print('go in get_color') hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) maxsum = 0 color = None color_dict = colorList.getColorList() for d in color_dict: mask = cv2.inRange(hsv, color_dict[d][0], color_dict[d][1]) # cv2.imwrite(d + ".png", mask) binary = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY)[1] binary = cv2.dilate(binary, None, iterations=2) # cv2.imwrite(d +"1.png", binary) cnts = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2] sum = 0 for c in cnts: sum += cv2.contourArea(c) # print("%s , %d" %(d, sum )) if sum > maxsum: maxsum = sum color = d return color if __name__ == '__main__': filename = "./images/test_yellow.png" frame = cv2.imread(filename) print(get_color(frame))
文件名:xf_realize.py 這是用攝像頭來識別顏色。。。就是加了個拍照功能 哦對 只返回紅綠藍三種顏色,因為搬的物料就是這三種顏色 懶得改了。。
# -*- coding:UTF-8 -*- import cv2 import xf_color def videox(): vix = cv2.VideoCapture(0) while True: ret, tu = vix.read() cv2.imshow("take_photo", tu) cv2.waitKey(1) cv2.imwrite("color.png", tu) filename = cv2.imread("color.png") color = xf_color.get_color(filename) if color == "red" or color == "red2": print("red") result = "1" break elif color == "green": print("green") result = "2" break elif color == "blue": print("blue") result = "3" break vix.release() cv2.destroyAllWindows() return result if __name__ == '__main__': videox()
接下來是識別二維碼的(有二維碼圖片文件) 文件名: xf_scance.py
# -*- coding:UTF-8 -*- import pyzbar.pyzbar as pyzbar from PIL import Image, ImageEnhance def scance(): image = "photo.png" img = Image.open(image) # img = ImageEnhance.Brightness(img).enhance(2.0) # 增加亮度 # # img = ImageEnhance.Sharpness(img).enhance(17.0) # 銳利化 # img = ImageEnhance.Contrast(img).enhance(4.0) # 增加對比度 # img = img.convert('L') # 灰度化 barcodes = pyzbar.decode(img) for barcode in barcodes: barcodeData = barcode.data.decode("utf-8") return barcodeData if __name__ == '__main__': scance()
再來個攝像頭掃二維碼的:
# -*- coding:UTF-8 -*- import cv2 import xf_scance def videox(): vix = cv2.VideoCapture(0) while True: ret, tu = vix.read() cv2.imshow("take_photo", tu) cv2.waitKey(1) cv2.imwrite("photo.png", tu) result = xf_scance.scance() if result: # print(result) break vix.release() cv2.destroyAllWindows() return result if __name__ == '__main__': r = videox() print(r)