https://mydreamambitious.blog.csdn.net/article/details/125339604
https://mydreamambitious.blog.csdn.net/article/details/125203273
https://mydreamambitious.blog.csdn.net/article/details/125265431
作用:rgb颜色空间转换到hsv颜色空间,颜色去除白色背景部分
参数:
第一个参数:hsv指输入的原图;
第二个参数:lower_red指的是图像中低于这个lower_red的值,像素值变为0;
第三个参数:upper_red指的是图像中高于这个upper_red的值,像素值变为0;
函数作用:得到包含二维点集的最小圆
参数:
InputArray points:输入的二维点集;
Point2f& center:表示输出的圆形的中心坐标,是float型;
float& radius:输出的最小圆的半径,是float型;
求轮廓的矩:
mu = cv.moments(contour) #contour是一个轮廓
cx = mu[‘m10’] / mu[‘m00’] #轮廓contour的质心的横坐标
cy = mu[‘m01’] / mu[‘m00’] #轮廓contour的质心的纵坐标
https://blog.csdn.net/Caesar6666/article/details/103257632
import os
import cv2
import numpy as np
cap=cv2.VideoCapture(0)
#设置RGB->HSV的低阈值和高阈值
Obj_low=np.array([0,0,0])
Obj_high=np.array([179,157,79])
while cap.isOpened():
OK,frame=cap.read()
if OK==False:
break
#对图片进行翻转,Opencv读取的图片和我们正常的显示方式相反
img=cv2.flip(src=frame,flipCode=2)
img=cv2.resize(src=img,dsize=(600,600))
#对图像进行高斯处理
gauss=cv2.GaussianBlur(src=img,ksize=(3,3),sigmaX=0)
#将图像转换为灰度图
gray=cv2.cvtColor(src=gauss,code=cv2.COLOR_BGR2HSV)
inrange=cv2.inRange(src=gray,lowerb=Obj_low,upperb=Obj_high)
#对图像进行腐蚀
kernel=cv2.getStructuringElement(shape=cv2.MORPH_RECT,ksize=(3,3))
erode=cv2.erode(src=inrange,kernel=kernel,iterations=2)
#对图形进行膨胀
dilate=cv2.dilate(src=erode,kernel=kernel,iterations=2)
#查找轮廓
contours,hierarchy=cv2.findContours(image=dilate,mode=cv2.RETR_TREE,
method=cv2.CHAIN_APPROX_SIMPLE)
maxArea=0
index=0
length=len(contours)
if length>0:
for i in range(length):
#计算轮廓的面积
area=cv2.contourArea(contours[i])
if area>maxArea:
maxArea=area
index=i
#得到包含最小点集的圆
((x,y),radius)=cv2.minEnclosingCircle(contours[index])
M=cv2.moments(contours[index])
center=(int(M['m10']/M['m00']),int(M['m01']/M['m00']))
if radius>5:
cv2.circle(img=img,center=center,radius=2,
color=(0,255,0),thickness=-1)
cv2.circle(img=img,center=center,radius=int(radius),
color=(0,0,255),thickness=3)
cv2.imshow('image',img)
if cv2.waitKey(1)&0xFF==27:
break
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')