首页 > 编程知识 正文

树莓派 python 摄像头,树莓派像识别物体颜色 形状

时间:2023-05-04 11:30:18 阅读:185734 作者:4650

用照相机拍摄import c v2 importosoutput _ dir='/home/pi/desktop/py ' I=1cap=cv2.video capture (0) while 1: ret, frame frame ) flag=cv2.waitkey(1) if flag==13:# )回车键output _ path=OS.path.join (output _ dir,' d.d ) 导入cv2

导入编号为NP

定义注释(x ) :

通过

usetrackbartoperfectlydefine (1/2 ) theloweranduppervaluesforhsvcolorspace ) cv2.namedwindow ) ' tracking ' )参数upper hs v3 startvalue4end value cv2.create tte nothing ) cv2.createtrackbar ) ' ls ' nothing (cv2.create trackbar (LV ),Tracking ),46,255,nothing ) cv2.create nothing ) cv2.createtrackbar('UV ',' Tracking ',255,255, nothing (while true : frame=cv2.im read (/home/pi/desktop/py/0002.jpg ) #。 这里是您的照片存放的路径HSV=cv2.cvtcolor )。cv2.color _ bgr2HSV (l _ h=cv2.gettrackbarpos (' LH ',' Tracking ' ) l ' Tracking ' (u _ h=cv2.gettrackbarpos )、' uh '、' tracking ' (u _ s=cv2.gettrackbarpos )、' tracking ' )。 ' tracking'(l_g=NP.Array([l_h,l_s,l_v] ) lowergreenvalueu _ g=NP.array [ u _ h,u_s,u src2cv2.imshow(frame ',frame ) cv2.imshow ) ) cv2.imshow res ) key=cv2.waitkey(1) if key==273: # escbreakbreakbreakbrestid 对于颜色边框,import c v2 importnumpyasnpimportimutilsfromimutilsimportcontours # import rpi.gpioasgpio # pin5=5#管脚选项,gpio5#

不旋转时的百分比值为10.5 # circle _ speed=9# servo _ straight=8.2 # gpio.setmode (gpio.BCM ) gpio.setup ) pin5、gpio 58.8 ) pin6是电机用#pwm_servo.start(0)0)初始占空比#pwm_motor.start(0 49 ) upper=NP.array ([ 255,255,255,2110 ] ) 博客的摄像机相反),所以加上这个词就是摄像机的图像正转(frame=imutils.rotate(frame,180 ) cv2.imshow ) ) frame '。 frame ) else 3360 flag=false ' ' ' defservo (a ) : if auto : PWM _ servo.changedutycycle ) a ) else 3360 gpio.setuu pulu 启用上拉电阻defmotor(a ) : if auto : PWM _ motor.changedutycle (a ) a ) ellangedutycle ) pull _ up _ down=gpio . 180 ) draw _ frame=frame.copy (# ifframeisnone : # breakifflagistrue : ' )处理由摄像机读取的图像,该步骤是比较重要的“”#转换颜色空间cv2.COLOR_BGR2HSV ) #颜色识别img=cv2.inrange ) frame_HSV,UPPER(#膨胀操作dilation=cv2.dilate(img,kernel,iteratel ),iterate cv2.morphologyex ) ) dilation,cv2.morphology kernel ) #高斯过滤器closing=cv2.Gaussian blur (closing,(5),0 ) #埃20 )进行“”以上的具体效果是根据环境寻找不同的“”#轮廓的cnts,_=cv2.findcontours(edges,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE ) )轮廓数的确定是确定是否发现了轮廓。如果没有发现轮廓则不继续操作。iflen(cnts ) 0: # )存储轮廓面积的列表s=[] # )排序后轮廓列表和与各轮廓对应的外接矩形) cnts, boundingrects (=contours.sort _ contours (CNTs ) )用于查找面积最大轮廓的索引forcntincnts : s.append (cv2.contour area ) cv2 . w,h )=boundingRects[max_index] #绘制矩形的frame_out=cv2.rectangle ) Draw_frame,) x, 2 ) ) () ) ) if 140x300: #print (直走) servo ) straight ) motor ) straight_line_speed ) ifx=1403360 # motote 打印) left ) servo ) servo_straight1.5 ) motor ) circle_speed ) else 33333330 motor (circle _ speed (' ' ' cv2.im show

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。