效果如下 实现原理很简答 测试的效果 最后附上所有代码
图片能处理和识别了,接下来就是摄像头了
import cv2 import numpy as np import matplotlib.pyplot as plt cv2.namedWindow("Photo_Detect") #定义一个窗口 cap=cv2.VideoCapture(0) #捕获摄像头图像 0位默认的摄像头 笔记本的自带摄像头 1为外界摄像头 while(True): #值为1不断读取图像 ret, frame = cap.read() #视频捕获帧 cv2.imwrite('cap_RGB.jpg',frame) #写入捕获到的视频帧 命名为cap_RGB.jpg cv2.imshow('Photo_Detect',frame) #显示窗口 查看实时图像 #按S 读取灰度图 if (cv2.waitKey(1) & 0xFF) == ord('S'): #不断刷新图像,这里是1ms 返回值为当前键盘按键值 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #RGB图像转为单通道的灰度图像 gray = cv2.resize(gray,(640,480)) #图像大小为640*480 cv2.imshow('cap',gray) #显示灰度图窗口 cv2.imwrite('cap.jpg',gray) #写入灰度图 if cv2.waitKey(1) & 0xFF == ord('Q'): #按Q关闭所有窗口 一次没反应的话就多按几下 break #执行完后释放窗口 cap.release() cv2.waitKey(0) cv2.destroyAllWindows()
可以识别摄像头当前所看到的图像
按一下S
输出灰度图
视频读取没什么问题了接下来是结合之前的图像处理 对摄像头图像进行实时处理
把摄像头读取一帧,存储一帧的数据进行处理 然后输出
因为机器处理的速度的很快 可以对每一帧 每一个图像进行处理
所以看起来效果就是实时处理摄像头的所显示的视频
移动物品 框会跟着动
一样的按Q退出import cv2 import numpy as np import matplotlib.pyplot as plt #高斯滤波 def GausBlur(img): gaus = cv2.GaussianBlur(img,(5,5),2) #(5, 5)表示高斯矩阵的长与宽都是5,标准差取2 return gaus #灰度处理 def Gray_img(gaus_img): gray = cv2.cvtColor(gaus_img,cv2.COLOR_BGR2GRAY) return gray #开运算操作 def open_mor(binary): kernel = np.ones((6,6),np.uint8) #8 8 数字可以自己改变加以调整效果 数字越大强度越高 opening = cv2.morphologyEx(binary,cv2.MORPH_OPEN,kernel, iterations=5) #iterations进行7次操作 次数越多效果越强 return opening #定义一个图像处理函数 def img_disapose(): #捕获存储完图像之后 对图像进行处理 #读取上面存储的图片 img = cv2.imread('cap_RGB.jpg') #0为灰度,1为彩色 img = cv2.resize(img,(640,480)) #设置窗口大小 #高斯滤波 gaus_img = GausBlur(img) #灰度处理 gray_img = Gray_img(gaus_img) #二值化处理 ret , binary = cv2.threshold(gray_img ,148 , 255 , cv2.THRESH_BINARY) #148 255 为设置阈值 #开运算操作 open_img = open_mor(binary) #颜色反转一下 open_img=~open_img #轮廓检测 contours, hierarchy = cv2.findContours(open_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) print('hierarchy',hierarchy) #描绘轮廓 c = sorted(contours, key=cv2.contourArea, reverse=True)[0] rect = cv2.minAreaRect(c) box = np.int0(cv2.boxPoints(rect)) #重点 这里的img要换成frame cv2.drawContours(frame, [box], -1, (0, 255, 0), 3) cv2.putText(frame, 'xuebi',(box[0][0],box[0][1]) , cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,255), 1) cv2.namedWindow("Photo_Detect") #定义一个窗口 cap=cv2.VideoCapture(1) #捕获摄像头图像 0位默认的摄像头 笔记本的自带摄像头 1为外界摄像头 while(True): #值为1不断读取图像 ret, frame = cap.read() #视频捕获帧 cv2.imwrite('cap_RGB.jpg',frame) #写入捕获到的视频帧 命名为cap_RGB.jpg img_disapose() #图像处理 cv2.imshow('Photo_Detect',frame) #显示窗口 查看实时图像 if cv2.waitKey(1) & 0xFF == ord('Q'): #按Q关闭所有窗口 一次没反应的话就多按几下 break #执行完后释放窗口 cap.release() cv2.waitKey(0) cv2.destroyAllWindows()
觉得有用的不妨点个赞
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算