Pycharm之目标识别(python,opencv)

身为大学生党的我,目前正在努力学习图像处理的相关知识,这篇文章是我的一点心得——目标识别。图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术,又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值(0-255)

图像处理技术的一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。 常见的系统有康耐视系统、图智能系统等,目前是正在逐渐兴起的技术。

数据库的引用(这里引用了opencv{cv2},numpy)

import cv2 as cv
import numpy as np

获取摄像头

cap=cv.VideoCapture(0)

指定追踪目标

ret,frame=cap.read() #读取第一帧
r,h,c,w=200,141,70,208
win=(c,r,w,h) #追踪窗口

这里的r,h,c,w根据实际情况确定。r即行,h即高,c即列,w即宽。


获取ROI直方图

roi=frame[r:r+h,c:c+w]

计算直方图

hsv_roi=cv.cvtColor(roi,cv.COLOR_BGR2HSV)
roi_hist=cv.calcHist([hsv_roi],[2],None,[180],[0,180])

归一化,像素值0-255

cv.normalize(roi_hist,roi_hist,0,255,cv.NORM_MINMAX)

目标追踪

term=(cv.TERM_CRITERIA_EPS|cv.TERM_CRITERIA_COUNT,10,1) 

设置迭代的终止标准,最多十次迭代

while(1):
    ret,frame=cap.read()
    if ret==True:
          hst=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
          dst=cv.calcBackProject([hst],[0],roi_hist,[0,180],1) #直方图反向投影
          ret,win=cv.meanShift(dst,win,term)

          x,y,w,h=win
          img2=cv.rectangle(frame,(x,y),(x+w,y+h),255,3)

cv.rectangle()函数:绘制矩形

扩展:cv.line()函数:绘制直线

cv.circle()函数:绘制圆形,存在-1实心圆

cv.putText()函数:添加文字,这里只能是英文,中文的话只会显示?,但可def引用库来解决,目前我还是对解决过程存疑,但解决方法一定木有问题,就是def引用库来解决

                       -----------------------------------------------------------------------绘制几何图形

显示图像

cv.imshow('frame',img2)
if cv.waitKey(60) & 0xFF == ord('q'):
              break

60指60ms(毫秒)

 释放对象和销毁窗口

cap.release()
cv.destroyAllWindows()

最后,注意:如果在开始的数据库引用前未指明import cv2 as cv而只引用了import cv2则后面的所有cv2改成cv。

由于本人刚刚接触图像处理,不是十分精通,希望广大人士支持并及时改正,让我们彼此成长,感激不尽哇。♥ 

你可能感兴趣的:(笔记,python,opencv,图像处理,目标检测,其他)