opencv矩计算图形主方向

主要也就是用了个一阶中心矩和二阶中心矩计算了一下质心和方向,主要用在印章上面,算是一个思路吧,毕竟还是需要调参的,鲁棒性比较一般。

用这种方式可以来稍微矫正一下图像,方便后期的处理。

主要代码如下:

#img为二值图像
M = cv2.moments(img)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
cv2.circle(img, (cx, cy), 10, (0, 0, 255), -1)
cv2.imshow('th',img)
cv2.waitKey()
a = int(M['mu20']/M['m00'])
b = int(M['mu11']/M['m00'])
c = int(M['mu02']/M['m00'])
square = math.sqrt(4 * b * b + (a - c) * (a - c))
theta = math.atan2(2 * b, a - c + square)*180/math.pi
cv2.line(img,(cx, cy),(cx+int(30*math.cos(theta)), cy+int(30*math.sin(theta))),(255, 0, 0),4)
cv2.imshow('th',img)
cv2.waitKey()

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: OpenCV中的(Moment)方法可以通过计算图像的质心来计算旋转角度。以下是使用方法计算旋转角度的步骤: 1. 加载图像并将其转换为灰度图像。 2. 通过阈值处理和形态学操作(如闭操作)来提取图像中的目标物体。 3. 使用findContours函数来检测目标物体的轮廓并计算轮廓的。 4. 根据计算出的,可以计算出目标物体的质心。 5. 使用moments函数来计算目标物体关于其质心的灯条,其中m20、m02和m11是阵的一些元素。 6. 利用灯条可以计算得到图像的旋转角度。 - 计算tan(2θ) = 2 * m11 / (m20 - m02) - 计算旋转角度θ = 0.5 * atan(tan(2θ)) 通过以上步骤,可以使用OpenCV方法计算得到图像的旋转角度。这种方法适用于检测目标物体的旋转角度,例如,旋转形或椭圆。它可以在图像处理和计算机视觉领域中被广泛应用,能够提供准确的旋转角度信息。 ### 回答2: 在OpenCV中,可以使用方法来计算旋转角度。首先,我们需要定义一个旋转阵,可以使用 `getRotationMatrix2D` 函数来实现。该函数需要指定旋转中心点、旋转角度以及缩放因子。然后,可以使用 `warpAffine` 函数来应用旋转阵到图像上。 以下是具体的步骤: 1. 导入OpenCV库,并读取图像。 2. 定义旋转中心点,通常是图片的中心点。 3. 定义旋转角度。 4. 定义缩放因子,通常是1。 5. 使用 `getRotationMatrix2D` 函数获取旋转阵。 6. 使用 `warpAffine` 函数应用旋转阵到图像上。 7. 使用 `cv2.imshow` 函数显示旋转后的图像。 8. 使用 `cv2.waitKey` 函数等待按键操作。 9. 使用 `cv2.destroyAllWindows` 函数关闭窗口。 下面是一个示例代码: ``` import cv2 import numpy as np # 读取图像 image = cv2.imread('image.jpg') # 定义旋转中心 center = (image.shape[1] // 2, image.shape[0] // 2) # 定义旋转角度 angle = 45 # 定义缩放因子 scale = 1 # 获取旋转阵 rotationMatrix = cv2.getRotationMatrix2D(center, angle, scale) # 应用旋转阵到图像上 rotatedImage = cv2.warpAffine(image, rotationMatrix, (image.shape[1], image.shape[0])) # 显示旋转后的图像 cv2.imshow('Rotated Image', rotatedImage) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上代码中,我们将图像顺时针旋转45度,并显示旋转后的图像。你可以根据具体需求修改旋转角度和图像路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值