{"id":80,"date":"2020-04-22T21:52:41","date_gmt":"2020-04-22T13:52:41","guid":{"rendered":"http:\/\/iotch.xyz\/?p=80"},"modified":"2020-04-22T21:52:41","modified_gmt":"2020-04-22T13:52:41","slug":"%e6%a0%91%e8%8e%93%e6%b4%bepythonopencv%e9%a2%9c%e8%89%b2%e8%af%86%e5%88%ab%e3%80%81%e8%b7%9f%e9%9a%8f%e3%80%81%e5%b7%a1%e7%ba%bf%e5%b0%8f%e8%bd%a6","status":"publish","type":"post","link":"https:\/\/www.iotch.xyz\/?p=80","title":{"rendered":"\u6811\u8393\u6d3epython+opencv\u989c\u8272\u8bc6\u522b\u3001\u8ddf\u968f\u3001\u5de1\u7ebf\u5c0f\u8f66"},"content":{"rendered":"\n<p class=\"has-text-color has-vivid-red-color\"><a href=\"https:\/\/blog.csdn.net\/qq_37760746\/article\/details\/103044315\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/blog.csdn.net\/qq_37760746\/article\/details\/103044315<\/a><\/p>\n\n\n\n<p>\u6811\u8393\u6d3epython+opencv\u989c\u8272\u8bc6\u522b\u3001\u8ddf\u968f\u3001\u5de1\u7ebf\u5c0f\u8f66<br>\u9996\u5148\u6811\u8393\u6d3e\u5fc5\u987b\u5b89\u88c5opencv\u3002<br>import numpy as np<br>import cv2<br>import RPi.GPIO as GPIO<br>GPIO.setwarnings(False) #Echo G21(input) #trig G20<br>GPIO.setmode(GPIO.BCM)<br>GPIO.setup(22,GPIO.OUT)<br>GPIO.setup(27,GPIO.OUT)<br>GPIO.setup(25,GPIO.OUT)<br>GPIO.setup(24,GPIO.OUT)<br>GPIO.setup(18,GPIO.OUT)<br>GPIO.setup(23,GPIO.OUT)<br>pwma=GPIO.PWM(18,100)<br>pwmb=GPIO.PWM(23,100)<br>pwma.start(100)<br>pwmb.start(100)<br>blue_lower = np.array([100,43,46])<br>blue_upper = np.array([124,255,255])<br>cap = cv2.VideoCapture(0)<br>pwma.ChangeDutyCycle(0)<br>GPIO.output(22,1)<br>GPIO.output(27,0)<br>pwmb.ChangeDutyCycle(0)<br>GPIO.output(25,True)<br>GPIO.output(24,False)<br>cap.set(3, 320) #x160<br>cap.set(4, 240) #y120<br>while 1:<br>ret, frame = cap.read()<br>frame = cv2.GaussianBlur(frame, (5, 5), 0)<br>hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)<br>mask = cv2.inRange(hsv, blue_lower, blue_upper)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mask = cv2.erode(mask, None, iterations=2)\nmask = cv2.GaussianBlur(mask, (3, 3), 0)\nres = cv2.bitwise_and(frame, frame, mask=mask)\n\ncnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)&#91;-2]\n\nif len(cnts) > 0:\n\n    cnt = max(cnts, key=cv2.contourArea)\n    (x, y), radius = cv2.minEnclosingCircle(cnt)\n    cv2.circle(frame, (int(x), int(y)), int(radius), (255, 0, 255), 2)\nprint(int(x), int(y))\nif int(x)>160:\n    pwma.ChangeDutyCycle(30)\n    GPIO.output(22,1)\n    GPIO.output(27,0)\n    pwmb.ChangeDutyCycle(30)    \n    GPIO.output(25,0)\n    GPIO.output(24,1)\n      else:\n    pwma.ChangeDutyCycle(30)\n    GPIO.output(22,0)\n    GPIO.output(27,1)\n    pwmb.ChangeDutyCycle(30)\n    GPIO.output(25,1)\n    GPIO.output(24,0)\nelse:\npwma.ChangeDutyCycle(0)\nGPIO.output(22,1)\nGPIO.output(27,0)\npwmb.ChangeDutyCycle(0)\nGPIO.output(25,True)\nGPIO.output(24,False)\n    pass\ncv2.imshow('frame', frame)\ncv2.imshow('mask', mask)\ncv2.imshow('res', res)\nif cv2.waitKey(5) &amp; 0xFF == 27:\n    break    <\/code><\/pre>\n\n\n\n<p>cap.release()<br>cv2.destroyAllWindows()<br><br>\u4e00\u4ee5\u4e0b\u4e3a\u989c\u8272\u53c2\u7167\u53c2\u6570\u8bbe\u7f6e<br>\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014<br>\u7248\u6743\u58f0\u660e\uff1a\u672c\u6587\u4e3aCSDN\u535a\u4e3b\u300cqq_37760746\u300d\u7684\u539f\u521b\u6587\u7ae0\uff0c\u9075\u5faa CC 4.0 BY-SA \u7248\u6743\u534f\u8bae\uff0c\u8f6c\u8f7d\u8bf7\u9644\u4e0a\u539f\u6587\u51fa\u5904\u94fe\u63a5\u53ca\u672c\u58f0\u660e\u3002<br>\u539f\u6587\u94fe\u63a5\uff1ahttps:\/\/blog.csdn.net\/qq_37760746\/java\/article\/details\/103044315<\/p>\n<button class=\"simplefavorite-button\" data-postid=\"80\" data-siteid=\"1\" data-groupid=\"1\" data-favoritecount=\"0\" style=\"\">\u6536\u85cf <i class=\"sf-icon-star-empty\"><\/i><\/button>","protected":false},"excerpt":{"rendered":"<p>https:\/\/blog.csdn.net\/qq_37760746\/article\/details\/103044315 \u6811\u8393\u6d3epy &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-80","post","type-post","status-publish","format-standard","hentry","category-11"],"_links":{"self":[{"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/posts\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=80"}],"version-history":[{"count":0,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iotch.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}