def func_4(): import sunpy.map import astropy.units as u import cv2 from astropy.coordinates import SkyCoord # 读取FITS文件 map = sunpy.map.Map(file_name) # 获取太阳黑子位置的像素值 position = map.world_to_pixel(SkyCoord(827*u.arcsec, 189*u.arcsec, frame=map.coordinate_frame)) # 获取图像数据并转换为OpenCV格式 data = map.data data = (data / data.max() * 255).astype('uint8') data = cv2.cvtColor(data, cv2.COLOR_GRAY2BGR) # 彩色 # 在图像中标记太阳黑子位置和像素值坐标 cv2.circle(data, (int(position[0].value), int(position[1].value)), 10, (0, 0, 255), -1) cv2.putText(data, f"({position[0].value:.1f}, {position[1].value:.1f})", (int(position[0].value), int(position[1].value) - 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 1) # 显示图像 cv2.imshow('image', data) cv2.waitKey(0) cv2.destroyAllWindows() 以上代码产出的fit图片从灰度图像改成彩色图像,并上下进行反转
时间: 2024-03-21 15:42:25 浏览: 51
好的,以下是修改后的代码:
```python
import sunpy.map
import astropy.units as u
import cv2
from astropy.coordinates import SkyCoord
# 读取FITS文件
map = sunpy.map.Map(file_name)
# 获取太阳黑子位置的像素值
position = map.world_to_pixel(SkyCoord(827*u.arcsec, 189*u.arcsec, frame=map.coordinate_frame))
# 获取图像数据并转换为OpenCV格式
data = map.data
data = (data / data.max() * 255).astype('uint8')
data = cv2.cvtColor(data, cv2.COLOR_GRAY2BGR) # 转化为彩色图像
data = cv2.flip(data, 0) # 上下翻转
# 在图像中标记太阳黑子位置和像素值坐标
cv2.circle(data, (int(position[0].value), int(position[1].value)), 10, (0, 0, 255), -1)
cv2.putText(data, f"({position[0].value:.1f}, {position[1].value:.1f})", (int(position[0].value), int(position[1].value) - 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 1)
# 显示图像
cv2.imshow('image', data)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在修改后的代码中,我们使用`cv2.cvtColor`函数将灰度图像转换为彩色图像,并使用`cv2.flip`函数进行上下反转。
阅读全文