树莓派python识别二维码_python3 树莓派 + usb摄像头 做颜色识别 二维码识别

今天又啥也没干 我完蛋了哦  就是没办法沉下心来,咋办。。。。还是先来条NLP吧。。

七,凡事必有至少三个解决方法

对事情只有一个方法的人,必陷入困境,因为别无选择。

对事情有两个方法的人也陷入困境,因为他制造了左右两难,进退维谷的局面给自己。

有第三个方法的人,通常会找到第四,五个方法,甚至更多的方法。

有选择就是有能力,所以,有选择总比没有选择好。

至今不成功,只是说至今用过的方法都得不到想要的效果。

没有办法,只是说已知的办法都行不通。

世界上尚有很多我们过去没有想过,或者尚未认识的方法。

只有相信尚有未知的有效方法,才会有机会找到它和使事情改变。

不论什么事情,我们总有选择的权利,而且不只是一个。

“没有办法”使事情画上句号,“总有办法”使事情有突破的可能。

“没有办法”对你没有好处,应停止想它;“总有办法”对你有好处,故应把它留在脑中。

为何不使自己成为第一个找出办法的人?

额。。。纯粹就是今天没得写的了,只好丢点以前写的抠脚程序,也不能叫程序,只能实现功能吧。。。也是东抄点,西抄点,然后一拼来的。。。。。

用的树莓派3B+  然后插个usb摄像头  就行了

文件名:colorList.py   这是颜色库。。。

1 #-*- coding:UTF-8 -*-

2 importnumpy as np3 importcollections4

5

6 defgetColorList():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_black16

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_gray24

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_white32

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_red40

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_red249

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_orange57

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_yellow65

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_green73

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_cyan81

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_blue89

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_purple97

98 returndict99

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 incolor_dict:109 print('key=', d)110 print('value=', color_dict[d][1])

然后是 xf_color.py  这就能识别颜色了 (这是识别已有图片文件版的)  原理就是用上面的色库 算出图片颜色面积  哪个最大 就算是啥颜色。。。抠脚。。。

#-*- coding:UTF-8 -*-

importcv2importcolorListdefget_color(frame):print('go in get_color')

hsv=cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

maxsum=0

color=None

color_dict=colorList.getColorList()for d incolor_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=0for c incnts:

sum+=cv2.contourArea(c)#print("%s , %d" %(d, sum ))

if sum >maxsum:

maxsum=sum

color=dreturncolorif __name__ == '__main__':

filename= "./images/test_yellow.png"frame=cv2.imread(filename)print(get_color(frame))

文件名:xf_realize.py    这是用摄像头来识别颜色。。。就是加了个拍照功能  哦对 只返回红绿蓝三种颜色,因为搬的物料就是这三种颜色  懒得改了。。

#-*- coding:UTF-8 -*-

importcv2importxf_colordefvideox():

vix=cv2.VideoCapture(0)whileTrue:

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"

breakvix.release()

cv2.destroyAllWindows()returnresultif __name__ == '__main__':

videox()

接下来是识别二维码的(有二维码图片文件)  文件名: xf_scance.py

#-*- coding:UTF-8 -*-

importpyzbar.pyzbar as pyzbarfrom PIL importImage, ImageEnhancedefscance():

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 inbarcodes:

barcodeData= barcode.data.decode("utf-8")returnbarcodeDataif __name__ == '__main__':

scance()

再来个摄像头扫二维码的:

#-*- coding:UTF-8 -*-

importcv2importxf_scancedefvideox():

vix=cv2.VideoCapture(0)whileTrue:

ret, tu=vix.read()

cv2.imshow("take_photo", tu)

cv2.waitKey(1)

cv2.imwrite("photo.png", tu)

result=xf_scance.scance()ifresult:#print(result)

breakvix.release()

cv2.destroyAllWindows()returnresultif __name__ == '__main__':

r=videox()print(r)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值