今天又啥也没干 我完蛋了哦 就是没办法沉下心来,咋办。。。。还是先来条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, hiera = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
- 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)