树莓派搭建图像识别基站
来源:互联网 发布:机械工艺设计软件 编辑:程序博客网 时间:2024/05/21 10:54
博主最近参加一个比赛,需要识别白色纸片上的黑色胶带,由于单片机跑不了opencv等一些高级算法,于是就想到了用树莓派 + python 跑opencv,实际测试效果还挺好
下面贴代码
#coding=utf_8import multiprocessingfrom threading import Timerimport numpy as npimport cv2import timei = 0time_interval = 1.0lower_blue = np.array([0,0,0])upper_blue = np.array([170,255,46])cap = cv2.VideoCapture(0)//打开Pi摄像头area_max = 19000 //最大面积area_min = 6000 //最小面积pyserial_test=serial.Serial("/dev/ttyS0",115200)###########################计算帧率函数############################################def frame_rate():global ix = iprint xi = 0t = Timer(time_interval,frame_rate)t.start()################################################################################################################主图像处理函数############################################def main():uart_send_data = multiprocessing.Process(name = "uart_send_data",target = uart_send,args = ())while(True):global ii = i + 1X = []Y = [] ret, frame = cap.read()gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)canny = cv2.Canny(gray, 30, 150)contours, hierarchy = cv2.findContours(canny,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)#寻找轮廓F = []for j in range(len(contours)):area = cv2.contourArea(contours[j])if (area > area_min)and(area < area_max):# print "Area",cv2.contourArea(contours[i])F.append(contours[j])cv2.drawContours(gray, F, -1, (0,255,0), 3)cv2.imshow("gray",gray )str_b = str(B)str_c = str(C)while (len(str_b) < 6):str_b = '\0' + str_bwhile (len(str_c) < 6):str_c = '\0' + str_cDATA = str(A) + str_b + str_c + str(D) +'\n'# time.sleep(1)pyserial_test.write(DATA)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()#################################################################################################函数入口###################################################################if __name__=='__main__':t = Timer(time_interval,frame_rate)t.start()try:main()except KeyboardInterrupt:if pyserial_test!=None:pyserial_test.close()
主要想法是树莓派捕捉到摄像头每一帧图像,然后灰度化,得到图像gray,然后将gray图像作为参数传递给canny函数,canny函数主要是检测物体轮廓,得到canny图像,再将canny图像(二值化)传递给找轮廓函数,findContours返回参数有两个,其中counters是一个列表,里面存放了每一个轮廓信息,然后遍历每一个轮廓信息,对其求面积,面积满足一定要求时,将counters列表元素append到F列表中,这样F列表中每一个元素就是满足面积要求的轮廓信息
阅读全文
0 0
- 树莓派搭建图像识别基站
- 伪基站识别技巧
- debian 搭建python图像识别环境
- 搭建tensorflow进行cnn图像识别
- GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站
- GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站
- Android 平台 tess-two 图像识别 环境搭建
- xcode+tesseract 搭建一个简单的图像文字识别程序
- 手机与基站如何互相识别?
- 伪基站识别技巧(一)
- 图像识别
- 图像识别
- 图像识别
- 图像识别
- 图像识别
- 图像识别
- 图像识别
- 图像识别
- matlab写coe文件
- 数据结构-单链表
- nginx面试要点--持续更新中
- node.js中get和post请求
- 中兴执行副总裁熊辉回母校谈目标:相信总有路可走
- 树莓派搭建图像识别基站
- 【2-sat】和平委员会
- 例题6-10 下落的树叶(The Falling Leaves, UVa 699)
- MYSQL中的视图
- cd,ls,ln,tree,文件系统
- AC自动机 HDU2222 Keywords Search
- Spark中job、stage、task的划分+源码执行过程分析
- C++命名空间
- T-Splines 4.0 For Rhino 完整汉化免费版下载