python3 树莓派 + usb摄像头 做颜色识别 二维码识别
今天又啥也没干 我完蛋了哦 就是没办法沉下心来,咋办。。。。还是先来条NLP吧。。
七,凡事必有至少三个解决方法
对事情只有一个方法的人,必陷入困境,因为别无选择。
对事情有两个方法的人也陷入困境,因为他制造了左右两难,进退维谷的局面给自己。
有第三个方法的人,通常会找到第四,五个方法,甚至更多的方法。
有选择就是有能力,所以,有选择总比没有选择好。
至今不成功,只是说至今用过的方法都得不到想要的效果。
没有办法,只是说已知的办法都行不通。
世界上尚有很多我们过去没有想过,或者尚未认识的方法。
只有相信尚有未知的有效方法,才会有机会找到它和使事情改变。
不论什么事情,我们总有选择的权利,而且不只是一个。
“没有办法”使事情画上句号,“总有办法”使事情有突破的可能。
“没有办法”对你没有好处,应停止想它;“总有办法”对你有好处,故应把它留在脑中。
为何不使自己成为第一个找出办法的人?
额。。。纯粹就是今天没得写的了,只好丢点以前写的抠脚程序,也不能叫程序,只能实现功能吧。。。也是东抄点,西抄点,然后一拼来的。。。。。
用的树莓派3B+ 然后插个usb摄像头 就行了
文件名:colorList.py 这是颜色库。。。
# -*- coding:UTF-8 -*-
import numpy as np
import collections def getColorList():
dict = collections.defaultdict(list) # black
lower_black = np.array([0, 0, 0])
upper_black = np.array([180, 255, 46])
color_list_black = []
color_list_black.append(lower_black)
color_list_black.append(upper_black)
dict['black'] = color_list_black # gray
lower_gray = np.array([0, 0, 46])
upper_gray = np.array([180, 43, 220])
color_list_gray= []
color_list_gray.append(lower_gray)
color_list_gray.append(upper_gray)
dict['gray'] = color_list_gray # white
lower_white = np.array([0, 0, 221])
upper_white = np.array([180, 30, 255])
color_list_white = []
color_list_white.append(lower_white)
color_list_white.append(upper_white)
dict['white'] = color_list_white # red
lower_red = np.array([156, 43, 46])
upper_red = np.array([180, 255, 255])
color_list_red = []
color_list_red.append(lower_red)
color_list_red.append(upper_red)
dict['red'] = color_list_red # red2 lower_red = np.array([0, 43, 46])
upper_red = np.array([10, 255, 255])
color_list_red2 = []
color_list_red2.append(lower_red)
color_list_red2.append(upper_red)
dict['red2'] = color_list_red2 # orange
lower_orange = np.array([11, 43, 46])
upper_orange = np.array([25, 255, 255])
color_list_orange = []
color_list_orange.append(lower_orange)
color_list_orange.append(upper_orange)
dict['orange'] = color_list_orange # yellow
lower_yellow = np.array([26, 43, 46])
upper_yellow = np.array([34, 255, 255])
color_list_yellow = []
color_list_yellow.append(lower_yellow)
color_list_yellow.append(upper_yellow)
dict['yellow'] = color_list_yellow # green
lower_green = np.array([35, 43, 46])
upper_green = np.array([77, 255, 255])
color_list_green = []
color_list_green.append(lower_green)
color_list_green.append(upper_green)
dict['green'] = color_list_green # cyan
lower_cyan = np.array([78, 43, 46])
upper_cyan = np.array([99, 255, 255])
color_list_cyan = []
color_list_cyan.append(lower_cyan)
color_list_cyan.append(upper_cyan)
dict['cyan'] = color_list_cyan # blue
lower_blue = np.array([100, 43, 46])
upper_blue = np.array([124, 255, 255])
color_list_blue = []
color_list_blue.append(lower_blue)
color_list_blue.append(upper_blue)
dict['blue'] = color_list_blue # purple
lower_purple = np.array([125, 43, 46])
upper_purple = np.array([155, 255, 255])
color_list_purple = []
color_list_purple.append(lower_purple)
color_list_purple.append(upper_purple)
dict['purple'] = color_list_purple return dict if __name__ == '__main__':
color_dict = getColorList()
print(color_dict) num = len(color_dict)
print('num=', num) for d in color_dict:
print('key=', d)
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 = ""
break
elif color == "green":
print("green")
result = ""
break
elif color == "blue":
print("blue")
result = ""
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)
python3 树莓派 + usb摄像头 做颜色识别 二维码识别的更多相关文章
- Flutter扫码识别二维码内容
前面一篇写了生成二维码图片,这篇来写使用相机扫描识别二维码 识别二维码需要用到插件 barcode_scan 首先在 pubspec.yaml 文件中添加以下依赖,添加依赖后在 pubspec.yam ...
- python实现树莓派生成并识别二维码
python实现树莓派生成并识别二维码 参考来源:http://blog.csdn.net/Burgess_Liu/article/details/40397803 设备及环境 树莓派2代 官方系统R ...
- Python3+qrcode+zxing生成和识别二维码教程
一.安装依赖库 pip install qrcode pillow image zxing pillow是python3中PIL的代替库,image是生成图版需要用到的库 安装image时报错“Cou ...
- iOS--iOS7摄像头识别二维码功能
iOS–iOS7摄像头识别二维码功能 属性介绍: AVFoundation 框架基于以下几个类实现图像捕捉 ,通过这些类可以访问来自相机设备的原始数据并控制它的组件. AVCaptureDevice ...
- 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码
接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...
- c# winform调用摄像头识别二维码
首先我们需要引用两个第三方组件:AForge和zxing. Aforge是摄像头操作组件,zxing是二维码识别组件.都是开源项目.避免重复造轮子. 其实一些操作代码我也是参照别人的,若侵犯您的版权, ...
- python3+pyzbar+Image 进行图片二维码识别
1.前言 最近公司有个项目要写个程序自动识别客户提交照片里的二维码,一接到这个任务马上就想到了用Python这个万能的工具! 2.搜寻 首先在网上到处找了很多“灵感”,看看其他人都会用什么包来完成这个 ...
- html5调用手机本地摄像头和相册识别二维码详细实现过程
项目中有用到h5识别我们的单据,单据上面有二维码. 实现的场景就是业务人员扫码 类似以下场景 业务员拿到单据以后,直接可以扫码进入相关单据业也可以 输入二维码下方的号码进行识别 下面是h5的页面构造 ...
- 第47章 QR-Decoder-OV5640二维码识别—零死角玩转STM32-F429系列
第47章 QR-Decoder-OV5640二维码识别 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.y ...
随机推荐
- SSM-SpringMVC-21:SpringMVC中处理器方法之返回值Object篇
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 今天要记录的是处理方法,返回值为Object的那种,我给它分了一下类: 1.返回值为Object数值(例如1) ...
- SSM-MyBatis-08:Mybatis中SqlSession的commit方法为什么会造成事物的提交
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 如题目所示,本小章节讨论为什么SqlSession的commit会造成事物的提交 首先先看SqlSessi ...
- 2018 Unite大会——《使用UPA工具优化项目》演讲实录
2018年5月11日至13日,腾讯WeTest与Unity联合打造的移动游戏性能分析工具(Unity Performance Analysis,以下称为UPA)正式亮相2018 Unite大会,为Un ...
- bzoj5252 [2018多省省队联测]林克卡特树
斜率优化树形dp?? 我们先将问题转化成在树上选K+1条互不相交路径,使其权值和最大. 然后我们考虑60分的dp,直接维护每个点子树内选了几条路径,然后该点和0/1/2条路径相连 然后我们会发现最后的 ...
- bzoj 1485 [HNOI2009]有趣的数列 卡特兰数
把排好序的序列看成一对对括号,要把他们往原数列里塞,所以就是括号序合法方案数 即为卡特兰数 f(n)=Cn2nn+1 求的时候为避免除法,可以O(n)计算每个素数出现次数,最后乘起来,打完之后发现其实 ...
- 前端学习笔记之CSS选择器
阅读目录 一 基本选择器 二 后代选择器.子元素选择器 三 兄弟选择器 四 交集选择器与并集选择器 五 序列选择器 六 属性选择器 七 伪类选择器 八 伪元素选择器 九 CSS三大特性 一 基本选择器 ...
- C++的代理类
怎样在一个容器中包含类型不同,但是彼此有关系的对象?众所周知,C++的容器只能存放类型相同的元素,所以直接在一个容器中存储不同类型的对象本身是不可能的,只能通过以下两种方案实现: 1. 提供一个间接层 ...
- vue+axios访问本地json数据踩坑点
当我们想在vue项目中模拟后台接口访问json数据时,我们发现无论如何也访问不到本地的json数据. 注意:1.在vue-cli项目中,我们静态资源只能放在static文件夹中,axios使用get请 ...
- [日志分析] Access Log 日志分析
0x00.前言: 如何知道自己所在的公司或单位是否被入侵了?是没人来“黑”,还是因自身感知能力不足,暂时还没发现?入侵检测是每个安全运维人员都要面临的严峻挑战.安全无小事,一旦入侵成功,后果不堪设想. ...
- MongoDB面试题
1.什么是MongoDB MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库.采用BSON存储文档数据.BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSO ...