上面代码补上每隔1°连续旋到180° 的值输出到一个和坐标是角度,纵坐标是各列像素值的总和的矩阵中并画出来
时间: 2024-03-03 09:54:01 浏览: 57
好的,以下是代码实现:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
height, width = gray.shape
center = (width // 2, height // 2)
matrix = np.zeros((180, width))
for angle in range(180):
M = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated = cv2.warpAffine(gray, M, (width, height))
matrix[angle] = np.sum(rotated, axis=0)
cv2.imshow('Matrix', matrix.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()
```
解释一下,首先读入一张图片并将其转为灰度图,然后获取图像的高度和宽度,并计算出图像中心点的坐标。接着创建一个180行、宽度为原图宽度的全零矩阵,用于存储每个角度下各列像素值的总和。然后循环180次,每次旋转1度,并计算出旋转后各列像素值的总和,并将其存入矩阵中。最后将矩阵转为8位无符号整型并显示出来。
如果需要将矩阵可视化,可以使用以下代码:
```python
import matplotlib.pyplot as plt
plt.imshow(matrix, cmap='gray')
plt.show()
```
这会将矩阵以灰度图形式显示出来。
阅读全文