编写一款2D CAD/CAM软件(十一)文档

软件在编辑、访问、使用数据时,数据在内存里;

当用户离线,数据在文档里,在硬盘里;

文档构成了数据的集合,完整地、独立地表示一个设计。

因此,本文封装了一个文档类JDocument用于数据的管理,同时增加了一个单独地文档模块库j-document来实现。

目录结构

JCad
    include
        j-document
            j-document.h
    j-document
        prj
            CMakeLists.txt
        src
            j-document.cpp

CMake配置

// JCad/CMakeLists.txt
add_subdirectory(j-document/prj)

// JCad/j-view/prj/CMakeLists.txt
target_link_libraries(
    j-view
    PRIVATE
    Qt5::Widgets
    Qt5::Core
    j-geometry
    j-document)

// JCad/j-main/prj/CMakeLists.txt
target_link_libraries(
        JCad
        PRIVATE
        Qt5::Widgets
        j-geometry
        j-document
        j-view)

// JCad/j-document/prj/CMakeLists.txt
cmake_minimum_required(VERSION 3.5)

project(j-document)

add_library(
        j-document
        SHARED
)

find_package(Qt5 COMPONENTS Core REQUIRED)
target_li
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为了提取PET/CT影像特征,我们可以使用深度学习模型,例如卷积神经网络(CNN)和自编码器(Autoencoder)等。这里我将为您提供一个使用CNN提取PET/CT影像特征的Python程序示例。 首先,我们需要导入必要的库: ```python import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense from tensorflow.keras.models import Sequential ``` 接下来,我们需要加载PET/CT影像数据集。这里假设您已经准备好了数据,并且它们被存储在名为“data.npy”和“labels.npy”的文件中。您可以使用以下代码读取它们: ```python data = np.load('data.npy') labels = np.load('labels.npy') ``` 然后,我们需要对数据进行预处理,包括对像素值进行归一化和将数据分为训练集和测试集: ```python # 归一化数据 data = data / 255.0 # 将数据分为训练集和测试集 split = int(0.8 * len(data)) train_data, test_data = data[:split], data[split:] train_labels, test_labels = labels[:split], labels[split:] ``` 现在,我们可以构建CNN模型。这里我们使用3个卷积层和2个全连接层构建模型: ```python model = Sequential([ Conv2D(16, (3,3), activation='relu', input_shape=(256, 256, 1)), MaxPooling2D(2,2), Conv2D(32, (3,3), activation='relu'), MaxPooling2D(2,2), Conv2D(64, (3,3), activation='relu'), MaxPooling2D(2,2), Flatten(), Dense(512, activation='relu'), Dense(1, activation='sigmoid') ]) ``` 在模型构建后,我们需要编译它并训练它: ```python model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.fit(train_data, train_labels, validation_data=(test_data, test_labels), epochs=10) ``` 最后,我们可以使用模型提取PET/CT影像特征。这里我们使用模型的倒数第二层作为特征提取器: ```python feature_extractor = tf.keras.Model(inputs=model.inputs, outputs=model.layers[-2].output) features = feature_extractor(data) ``` 完整的程序示例如下: ```python import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense from tensorflow.keras.models import Sequential # 加载数据 data = np.load('data.npy') labels = np.load('labels.npy') # 归一化数据 data = data / 255.0 # 将数据分为训练集和测试集 split = int(0.8 * len(data)) train_data, test_data = data[:split], data[split:] train_labels, test_labels = labels[:split], labels[split:] # 构建模型 model = Sequential([ Conv2D(16, (3,3), activation='relu', input_shape=(256, 256, 1)), MaxPooling2D(2,2), Conv2D(32, (3,3), activation='relu'), MaxPooling2D(2,2), Conv2D(64, (3,3), activation='relu'), MaxPooling2D(2,2), Flatten(), Dense(512, activation='relu'), Dense(1, activation='sigmoid') ]) # 编译模型并训练 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.fit(train_data, train_labels, validation_data=(test_data, test_labels), epochs=10) # 提取特征 feature_extractor = tf.keras.Model(inputs=model.inputs, outputs=model.layers[-2].output) features = feature_extractor(data) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值