python-opencv部分函数使用

实际操作的opencv版本: 4.4.0.42
安装指令(记得换安装源,这样安装的快些):

pip opencv-python==4.4.0.42  / conda opencv-python==4.4.0.42

1.cv2.findContours

简介:cv2.findContours()函数是用来检测物体轮廓的函数
定义:def findContours(image, mode, method, contours=None, hierarchy=None, offset=None)
		image - 要检测的图片,注意:该函数输入的图片为二值图,即黑白的(不是灰度图)
		mode - 轮廓的检索模式:(仅写出常用mode)
    		①:cv2.RETR_EXTERNAL - 只检测外轮廓
    		②:cv2.RETR_CCOMP - 建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息
		method - 轮廓的近似办法:(仅写出常用method)
    		①:cv2.CHAIN_APPROX_NONE - 存储所有的轮廓点,相邻的两个点的像素位置差不超过1
    		②:cv2.CHAIN_APPROX_SIMPLE - 压缩水平方向、垂直方向、对角线方向的元素,只保留该方向的终点坐标
使用:
	# 以二值图形式读取图片
	img = cv2.imread(‘test.jpg’, 0)
	# 寻找可能的轮廓线
	contours, hierarchy = cv2.findContours(img, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)

2.cv2.fitEllipse

简介:cv2.fitEllipse()函数是用来拟合椭圆的函数
定义:def fitEllipse(points)
		points - 轮廓线点列
使用:
	# 以二值图形式读取图片
	img = cv2.imread(‘test.jpg’, 0)
	# 寻找可能的轮廓线
	contours, hierarchy = cv2.findContours(img, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)
	for contour in contours: 
	  # 过滤过短的轮廓线,因为拟合一个椭圆最少要5个点
      if contour.size < 6:
        continue
      # 拟合椭圆,输入筛选出的轮廓线点列,输出((x坐标,y坐标),(长轴,短轴),倾角)
      # 注意,输出的是长轴和短轴,不是半长轴和半短轴,输出的角度为角度制格式,不是弧度制格式
      centre_pref, axil_pref, theta_pref = cv2.fitEllipse(contour)

3.cv2.ellipse

简介:cv2.ellipse()函数是用来画椭圆的函数
定义:def ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None, shift=None)
		img - 要画的图像输入
		center - 椭圆中心点
		axes - 椭圆的半长轴和半短轴
		angle - 倾斜角度(输入的角度为角度制格式,不是弧度制格式)
		startAngle - 起始角度
		endAngle - 结束角度
		color - 椭圆线条颜色,服从BGR的规律
		thickness=None - 椭圆线的粗细,-1为将整个椭圆进行填充
		lineType=None - 椭圆边界的类型(可选参数)
		shift=None - 中心坐标中的小数位数和轴的值(可选参数)
使用:
	# 读取图片
	img = cv2.imread(‘test.jpg’)
	# 画椭圆,注意:cv2.ellipse()函数所输入的椭圆圆心坐标、半长短轴长度都需要是整形的,即整数
    cv2.ellipse(img , (int(x), int(y)), (int(axil_x), int(axil_y)), theta, 0, 360, color=(0, 0, 255), thickness=1)
    # 显示椭圆
    cv2.imshow("contours", img )
    # 显示等待
    cv2.waitKey()
    # 摧毁显示窗口,即此张图片显示结束
    cv2.destroyAllWindows()
  • 未完待续。。。

你可能感兴趣的:(圆形标记点检测,python,opencv)