使用Python实现计算DICOM图像两点真实距离
作者:Alex-Leung
这篇文章主要为大家详细介绍了如何使用Python实现计算DICOM图像两点真实距离,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
对比测量结果图
DICOM阅读器(小赛看看)测量结果
python测量结果
代码
import numpy as np import cv2 import math import pydicom from pydicom.pixel_data_handlers.util import convert_color_space ds = pydicom.dcmread("./your_dicom_path.dcm") # 第几张图, dtype根据Bits Allocated定义 img = np.asarray(ds.pixel_array[0], dtype='uint8') # 获取色彩空间 color_space = ds.get(0x00280004).value # 颜色空间转换 img = convert_color_space(img, color_space, 'RGB') # BGR转RGB img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 像素和真实空间比例尺 autio_x = ds.get(0x00280030).value[0] autio_y = ds.get(0x00280030).value[1] p1 = None p2 = None # 欧股定理 def cal_euler(p1, p2): a2 = ((p2[1] - p1[1]) * autio_x) ** 2 b2 = ((p2[0] - p1[0]) * autio_y) ** 2 res = math.sqrt(a2 + b2) return res # 鼠标事件 def mouseHandler(event, x, y, flags, param): global p1, p2 if event == cv2.EVENT_LBUTTONDOWN: point = (x, y) if p1 == None: p1 = point else: p2 = point print(point) cv2.destroyAllWindows() cv2.namedWindow('p1') cv2.setMouseCallback('p1', mouseHandler) cv2.imshow('p1', img) cv2.waitKey() cv2.namedWindow('p2') cv2.setMouseCallback('p2', mouseHandler) cv2.imshow('p2', img) cv2.waitKey() res = cal_euler(p1, p2) img = cv2.line(img, p1, p2, (0, 0, 255), 1, 1) cv2.putText(img, str(round(res, 2)) + "mm", p2, cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 1, cv2.LINE_AA) cv2.imshow('res', img) cv2.waitKey()
到此这篇关于使用Python实现计算DICOM图像两点真实距离的文章就介绍到这了,更多相关Python计算图像两点距离内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!