当前位置: 首页 > news >正文

苏宁电器网站建设特点分析网站开发哪个工具好

苏宁电器网站建设特点分析,网站开发哪个工具好,泉州做网站联系方式,爱链接外链购买文章目录 一、napari 简介二、napari 安装与更新三、napari【巨巨巨大的一个BUG】四、napari 使用指南4.1、菜单栏#xff08;File View Plugins Window Help#xff09;4.2、Window#xff1a;layer list#xff08;参数详解#xff09;4.3、Window#xff1a;layer… 文章目录 一、napari 简介二、napari 安装与更新三、napari【巨巨巨大的一个BUG】四、napari 使用指南4.1、菜单栏File View Plugins Window Help4.2、Windowlayer list参数详解4.3、Windowlayer controlspoints layer shapes layer labels layer 五、项目实战5.1、查看图像napari.view_image()5.2、添加图像viewer.add_image()5.3、添加点云viewer.add_points()5.4、添加形状viewer.add_shapes() —— 获取线条坐标起点和终点 六、在napari中自定义组件并与PyQt完成交互 一、napari 简介 基于 Python 编写的快速、交互式多维图像查看器。 napari 官网首页https://napari.org/0.4.18/index.html# napari 使用案例https://napari.org/0.4.18/gallery.html#gallery 二、napari 安装与更新 安装naparipip install napari更新naparipip install --upgrade napari 三、napari【巨巨巨大的一个BUG】 【BUG】点击View - Toggle Full Screen将最大化软件界面且菜单栏和很多按钮都将不可用。【影响】此时想要任何操作都无法退出最大化即使关闭后重试卸载后重试都无法达到没有试过关机后重试。【解决方法】Window Tab切换窗口菜单栏可以短暂有效且可点击瞬间点击View - Toggle Full Screen可解除BUG。 四、napari 使用指南 4.1、菜单栏File View Plugins Window Help File文件1Open File打开文件2Opencv File as Stack打开文件适用于大尺度3Open Sample napari builtins提供了很多的内置样本初学者可以直接导入后研究4Preferences设置主题 快捷键等等5Save Selected Layer(s)所有帧图像保存选定的单层或多层指定后缀修改图像格式6Save All Layers所有帧图像保存所有层指定后缀修改图像格式7Save Screenshot单帧图像保存当前窗口内容不显示界面8Save Screenshot with Viewer单帧图像保存整个视图内容图像 界面 Plugins插件安装和卸载插件也可以自定义 View视图1Axes轴2Scale Bar刻度条3Toggle Full Screen切换全屏4Toggle Menubar Visibity切换菜单可见性5Toggle Paly切换面板6Toggle Layer Tooltips切换图层工具提示7Toggle Activity Dock切换活动区 Window窗口1console控制面板命令行窗口2layer controls图层控制点层、形状层、标签层3layer list图层列表 Help帮助直接跳转官网页面1Getting started开始2Tutorials教程3Using Layers Guides使用图层指南4Examples Gallery示例图库5Release Notes版本说明6napari homepagenapari 主页7napari Infonapari 信息 4.2、Windowlayer list参数详解 4.3、Windowlayer controlspoints layer shapes layer labels layer 五、项目实战 5.1、查看图像napari.view_image() 在napari查看器中显示单个或多个图像并提供了许多可选参数来自定义图像的显示。 import napari import tifffileimage_path output_8bit.tif marked_image tifffile.imread(image_path)viewer napari.view_image(marked_image, nameimage, rgbFalse) napari.run() # 备注若不添加napari.run()将避免程序阻塞问题一直等待界面关闭 ######################################################################################################### # 函数说明napari.view_image(data, channel_axisNone, nameNone, colormapNone, blendingNone, interpolationNone, gammaNone, # is_pyramidNone, rgbNone, scaleNone, translateNone, contrast_limitsNone, renderingNone) # 输入参数 # - data要显示的图像数据。可以是以下格式之一 # 2D NumPy array灰度图像数据。 # 3D NumPy array3D图像数据例如多张2D图像叠加形成的图像序列。 # 4D NumPy array4D图像数据例如多通道彩色图像。 # List of 2D, 3D, or 4D arrays多个图像数据列表。 # Dask array支持分块加载的大型图像数据。 # ImageData来自dask_image.imread()等函数的图像数据对象。 # channel_axis用于多通道图像的通道轴的索引。默认值为None表示使用最后一个轴作为通道轴。 # - name图像的名称将在napari查看器中显示。 # - colormap图像的颜色映射。可以是字符串表示的颜色映射名称或是colormap函数。默认值为None表示使用默认颜色映射。 # blending图像的混合模式。可以是字符串表示的混合模式名称例如translucent、additive等。默认值为None表示使用默认混合模式。 # interpolation图像的插值方法。可以是字符串表示的插值方法名称例如nearest、bilinear、bicubic等。默认值为None表示使用默认插值方法。 # gamma图像的gamma值用于对图像进行伽马校正。默认值为None表示不进行伽马校正。 # is_pyramid布尔值用于指示是否使用金字塔结构显示图像。默认值为None表示不使用金字塔结构。 # rgb布尔值用于指示输入图像是否为RGB彩色图像。默认值为None表示根据输入图像数据自动判断。 # scale图像的缩放因子。可以是单个值表示在所有轴上应用相同的缩放也可以是每个轴的缩放因子列表。默认值为None表示不进行缩放。 # translate图像的平移量。可以是单个值表示在所有轴上应用相同的平移也可以是每个轴的平移量列表。默认值为None表示不进行平移。 # contrast_limits图像的对比度限制用于控制图像显示的亮度范围。可以是单个值表示在所有轴上应用相同的对比度限制也可以是每个轴的对比度限制列表。默认值为None表示不设置对比度限制。 # rendering图像的渲染模式。可以是字符串表示的渲染模式名称例如mip、translucent、attenuated_mip等。默认值为None表示使用默认渲染模式。 #########################################################################################################5.2、添加图像viewer.add_image() 将单个或多个图像添加到napari查看器中并提供了多个可选参数来自定义图像的显示。 import napari import tifffileimage_path 561result-1-part.tif marked_image tifffile.imread(image_path)viewer napari.Viewer() # 创建napari视图 viewer.add_image(marked_image, nameimage, colormapred) # 添加图像指定红色 ################################################################################ # 隐藏面板 # viewer.window.qt_viewer.controls.hide() # 隐藏后不可使用该功能重新打开也不行 # viewer.window.qt_viewer.layers.hide()# viewer.window.qt_viewer.controls.close() # viewer.window.qt_viewer.layers.close() ################################################################################ napari.run() # 显示napari图形界面 # 备注若不添加napari.run()将避免程序阻塞问题一直等待界面关闭 ######################################################################################################### # 函数说明viewer.add_image(data, *, nameNone, scaleNone, translateNone, contrast_limitsNone, # colormapNone, blendingNone, visibleTrue, opacity1.0, interpolationbilinear, # renderingmip, rgbNone, colormap_rangeNone) # 输入参数 # - data要添加的图像数据。可以是以下格式之一 # 2D NumPy array灰度图像数据。 # 3D NumPy array3D图像数据例如多张2D图像叠加形成的图像序列。 # 4D NumPy array4D图像数据例如多通道彩色图像。 # - name图像的名称将在napari查看器中显示。 # scale图像的缩放因子。可以是单个值表示在所有轴上应用相同的缩放也可以是每个轴的缩放因子列表。 # translate图像的平移量。可以是单个值表示在所有轴上应用相同的平移也可以是每个轴的平移量列表。 # contrast_limits图像的对比度限制用于控制图像显示的亮度范围。可以是单个值表示在所有轴上应用相同的对比度限制也可以是每个轴的对比度限制列表。 # - colormap图像的颜色映射。可以是字符串表示的颜色映射名称或是colormap函数。 # blending图像的混合模式。可以是字符串表示的混合模式名称例如translucent、additive等。 # visible图像是否可见。布尔值默认为True。 # opacity图像的不透明度。默认为1.0表示完全不透明。 # interpolation图像的插值方法。可以是字符串表示的插值方法名称例如nearest、bilinear、bicubic等。 # rendering图像的渲染模式。可以是字符串表示的渲染模式名称例如mip、translucent、attenuated_mip等。 # rgb布尔值用于指示输入图像是否为RGB彩色图像。 # colormap_range颜色映射的范围。可以是字符串例如auto或full表示自动计算颜色映射范围或使用完整范围。 #########################################################################################################5.3、添加点云viewer.add_points() 将点的坐标和可选的其他属性添加到napari查看器中并提供了多个可选参数来自定义点云的显示。 viewer.add_points()用于添加点云数据但不能直接显示。需要先添加viewer.view_image()然后再显示点云数据。点云数据由离散点(x, y, z)坐标的集合组成。 import napari import tifffile import numpy as np# 1通过tifffile加载tif图像 marked_image tifffile.imread(marked_image.tif)# 2获取图像的长宽高 if len(marked_image.shape) 3: # 灰度3D图像10x10x10depth, height, width marked_image.shape elif len(marked_image.shape) 4: # 彩色3D图像3x10x10x10depth, height, width, _ marked_image.shape# 3根据图像类型自适应变量值 if marked_image.dtype np.uint8:max_gray_value 255 elif marked_image.dtype np.uint16:max_gray_value 65535 elif marked_image.dtype np.uint32:max_gray_value 4294967295 #################################################################### # 4.1提取指定像素 indices np.argwhere(marked_image max_gray_value)# 4.2指定范围内的像素值获取坐标并绘制为标记点 # min_gray_value 50 # max_gray_value max_gray_value - 1 # indices np.argwhere((marked_image min_gray_value) (marked_image max_gray_value)) #################################################################### viewer napari.Viewer() # 创建napari查看器 viewer.add_image(marked_image) # 添加图像到napari视图 viewer.add_points(indices[:, [0, 1, 2]], size2, face_colorred, shadingspherical, edge_width0) # 添加点云 napari.run() # 显示napari图形界面 # 备注若不添加napari.run()将避免程序阻塞问题一直等待界面关闭 5.4、添加形状viewer.add_shapes() —— 获取线条坐标起点和终点 注意shapes层和image_data层是两个独立的层故线的坐标映射到image_data需要进行高度和宽度限制。 import napari import cv2# 1加载图像 image_path blank.png image_data cv2.imread(image_path) print(height:, image_data.shape[0], width:, image_data.shape[1]) # 2创建napari Viewer viewer napari.Viewer() viewer.add_image(image_data) # 添加图像 # 添加形状线条 线宽 颜色 shapes_layer viewer.add_shapes(dataNone, shape_typeline, edge_width3, edge_colorred) shapes_layer.mode add_line # 直接开始绘制线条 napari.run() # 运行napari # 备注若不添加napari.run()将避免程序阻塞问题一直等待界面关闭# 3打印坐标 # image_shape image_data.shape # 获取图像的形状 line_layer viewer.layers[Shapes] # 获取绘制的线的图层 line_coordinates1 [] # 获取绘制的所有线的坐标 line_coordinates2 [] # 获取绘制的所有线的坐标删除超出图像的线条if line_layer.data: # 检查图层数据是否存在for line in line_layer.data: # 遍历线的坐标coordinates1 [line[0, 0], line[0, 1], line[1, 0], line[1, 1]]line_coordinates1.append(coordinates1)for line in line_layer.data: # 遍历线的坐标# 【高度限制】删除超出图像的线条if line[0, 0] 0:line[0, 0] 0elif line[0, 0] image_data.shape[0]:line[0, 0] image_data.shape[0]if line[1, 0] 0:line[1, 0] 0elif line[1, 0] image_data.shape[0]:line[1, 0] image_data.shape[0]# 【宽度限制】删除超出图像的线条if line[0, 1] 0:line[0, 1] 0elif line[0, 1] image_data.shape[1]:line[0, 1] image_data.shape[1]if line[1, 1] 0:line[1, 1] 0elif line[1, 1] image_data.shape[1]:line[1, 1] image_data.shape[1]coordinates2 [line[0, 0], line[0, 1], line[1, 0], line[1, 1]]line_coordinates2.append(coordinates2)# 输出所有坐标shapes线坐标for idx, coordinates in enumerate(line_coordinates1):print(fLine {idx 1} coordinates1:, coordinates)print()# 输出所有坐标image线坐标映射到图像的坐标高度限制宽度限制for idx, coordinates in enumerate(line_coordinates2):print(fLine {idx 1} coordinates2:, coordinates) 六、在napari中自定义组件并与PyQt完成交互 在napari中自定义组件与PyQt新建组件的方法相同区别是需要将插件的主窗口添加到napari界面的控制面板中self.viewer.window.add_dock_widget(widget, arearight) # 添加到napari的右侧其中widget是插件的主窗口。 import tifffile import napari import numpy as np import sys import os from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, \QPushButton, QFileDialog, QTextEdit, QSlider, QCheckBox from PyQt5.QtCore import Qtclass Window(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle(Window)##########################################################layout QVBoxLayout()button_layout QHBoxLayout()self.load_button QPushButton(Load Image, self)self.load_button.clicked.connect(self.load_image)self.image_name_label QLabel()button_layout.addWidget(self.load_button)button_layout.addWidget(self.image_name_label)layout.addLayout(button_layout)##########################################################widget QWidget()widget.setLayout(layout)self.setCentralWidget(widget)########################################################### 初始化参数self.image_path self.image_name ##########################################################def load_image(self):file_dialog QFileDialog()image_path, _ file_dialog.getOpenFileName(self, Select Image, , Image Files (*.tif *.png *.jpg *.jpeg))if image_path:self.image_path image_pathself.image_name os.path.basename(image_path)self.image_name_label.setText(self.image_name)self.image_slices tifffile.imread(image_path)self.napari_gray_view() # 调用napari_gray_view方法来显示第一个切片def napari_gray_view(self):# 1napari创建视图、添加图层、显示视图self.viewer napari.Viewer() # 创建napari视图self.viewer.add_image(self.image_slices, nameimage) # 添加napari图层# napari.run() # 显示napari图形界面# 备注若不添加napari.run()将避免程序阻塞问题一直等待界面关闭########################################################################## 2自定义组件########################################################################## 2.1创建滑动条self.slider QSlider() # 新建滑动条self.slider.setMinimum(0) # 设置滑动条的最小值self.slider.setMaximum(np.max(self.image_slices)) # 设置滑动条的最大值self.slider.setValue(0) # 设置滑动条的初始值# 2.2创建标签self.slider_label QLabel(str(self.slider.value()))# 2.3复选框self.checkbox QCheckBox(checkbox) # 复选框self.slider.setEnabled(False) # 复选框的初始状态Falseself.input_box QLineEdit() # 新建输入框self.input_box.setEnabled(True) # 复选框的初始状态Trueself.input_label QLabel(range: str(np.min(self.image_slices)) / str(np.max(self.image_slices))) # 输入框标签# 3创建布局并将滑动条和标签添加到布局中layout QVBoxLayout()layout.addWidget(self.slider)layout.addWidget(self.slider_label)layout.addWidget(self.checkbox)layout.addWidget(self.input_box)layout.addWidget(self.input_label)# 4创建一个QWidget作为插件的主窗口widget QWidget()widget.setLayout(layout)# 5连接复选框的状态变化信号与槽函数self.checkbox.stateChanged.connect(self.onCheckboxStateChanged)self.slider.valueChanged.connect(self.napari_update_gray) # 根据滑动条的值显示第一个切片self.input_box.returnPressed.connect(self.napari_update_gray) # 根据输入框的值显示第一个切片# 6将插件的主窗口添加到napari界面的控制面板中self.viewer.window.add_dock_widget(widget, arearight) # 添加到napari的右侧########################################################################## 7napari显示视图self.viewer.window.show()def onCheckboxStateChanged(self, state):if state Qt.Checked:self.slider.setEnabled(True)self.input_box.setEnabled(False)else:self.slider.setEnabled(False)self.input_box.setEnabled(True)def napari_update_gray(self):# 1获取napari视图中的图层对象并获取图像数据napari_image self.image_slices.data# 2获取当前切片滑动条的值current_slice int(self.viewer.dims.current_step[0])# 3获取当前灰度滑动条的值self.slider_label.setText(str(self.slider.value()))if self.checkbox.isChecked():current_gray self.slider.value()else:current_gray int(self.input_box.text())print(current_slice:, current_slice, current_gray:, current_gray)if __name__ __main__:app QApplication(sys.argv)window Window()window.show()sys.exit(app.exec_())
http://www.sadfv.cn/news/378216/

相关文章:

  • 如何写网站开发需求文档公司网站域名和空间使用费
  • 网站建设组织教医学生做科研的网站有哪些
  • 淄博网站公司电话株洲企业网站制作
  • 企业建站多站点管理系统都是些什么企业需要建设网站
  • 做微商在哪个网站打广告好网站的留言板怎么做
  • 怎么自己创建网站免费wordpress分段
  • 做网站第一部电脑建网站
  • dede旅游网站源码 多城市江南网盟-专注中小企业网站建设服务
  • 广州seo网站排名android开发工具排行榜
  • 网站链接改名怎做301做汽车的网站编辑
  • 帮别人做设计图的网站深圳市光明区住房和建设局
  • 怎么创建个人的网站wordpress 特点
  • 做哪个行业的网站好怎么进入外网
  • 网站建设搭建环境网络营销工具中最基本最重要的是
  • 建设厅执业注册中心网站自己做个网站需要几个软件
  • iis网站开发需要哪些配置东莞网站建设最优
  • 手机网站 百度推广厦门工程信息网
  • 网站建设公司基本流程怀宁建设局网站
  • 网站高端建设开发公司个人可以建网站
  • 外贸网站搭建推广常熟企业建设网站公司
  • 网站怎么做落款温州市瓯海建设局网站
  • 深圳招聘网站哪个好seo快速排名网站优化
  • 一个网站 两个数据库胶州网站建设 网络推广
  • 网站备案时网站没有内容可以怎么自己制作游戏
  • dedecms网站的下载响应式企业网站系统
  • 网站开发过程文档wordpress网站图片迁移
  • 大形电商网站开发费用网页怎么制作步骤
  • 怎么做动漫原创视频网站如何仿网站模板
  • 昆明官网seo厂家网站建站 seo
  • 深圳市住房建设部网站福州百度开户多少钱