Code interpreter生成无聊的APP:病理图像切割和提取

一、写在前面

机器学习100步不够分配了,所以开个新专栏,就叫做《Code interpreter生成无聊的APP》,旨在探索GPT-4官方插件Code interpreter的使用心路历程。

主要灵感来源:听户主说,她们在做病理组学图像标注和分割的时候,还得手动对标注区域进行提取和分割,费时费力废眼睛,严重不符合AI时代(躺平摸鱼)的生产方式。因此,我想能不能用Code interpreter帮我弄一个APP,一键搞定?

所以,干脆开一个专栏,记录我干这种无聊事情的前因后果。

二、任务和APP

(1)任务

先说说要干啥,有一张使用超高清扫描出来的病理图片,也就821M。

这种图片,PS也打不开。双击打开,电脑也要卡死。

只能在一个叫做“ImageScope x64”的软件打开和标注。那么,任务就是需要在这图片上圈出病变区域,比如病变区域1以及病变区域2

这个软件就会生成图层一图层二,其中图层一包含2个区域(红色多边形)图层二包含2个区域(黑色多边形)。该软件会保存为下面两个软件:

TIFF就是原始图片,后面这个叫做XML注释文件,保存着我们所做的注释信息。

最终,要做的也简单,把以上四张图切割出来,用于后续建模啥的。

手工操作的后果,苦不堪言吧。

(2)APP

因此,弄了一个丑萌丑萌的APP:

操作也简单粗暴:分别填入TIF文件、XML文件和选择结果输出的文件夹,点击提取。

这个过程耗时取决于你的CPU和内存,比如我的内存只有16g,花了18分钟,结果如下:

 

 

 

哈哈,不要在意命名是反的。

重要的是分割出来了,而且每一个图片也是几百M的大小。

三、制作花絮

全程基于Code interpreter开发,晒出咒语和对线过程:

四、APP安装和运行

(1)安装依赖库

上述脚本使用了以下Python库:

os:Python标准库,无需额外安装。

numpy:用于数值计算和数组操作。

xml.etree.ElementTree:Python标准库,用于XML解析,无需额外安装。

PIL(从 Pillow 包导入):用于图像操作。

skimage.draw:来自 scikit-image 包,用于绘制多边形。

所以,需要安装的依赖库有:

numpy

Pillow

scikit-image

其中,numpy在安装Anaconda环境的时候自动配有的,因此难点在于Pillow和scikit-image,介绍下手动安装:

(a)下载依赖安装包

Pillow的下载地址:Pillow · PyPI

比如我的是,Python3.8,系统是Win10 64位,就选择:

Pillow-10.0.0-cp38-cp38-win_amd64.whl (2.5 MB view hashes)

同样,

scikit-image的下载地址:scikit-image · PyPI

Python3.8,系统是Win10 64位,就选择:

scikit_image-0.21.0-cp38-cp38-win_amd64.whl (22.7 MB view hashes)

上述两个文件记得存在哪里啊,要移动的。

(b)安装

打开Anaconda Powershell Prompt,弹出黑框:

 切换环境,比如我的是tf2.6:

conda activate tf2.6

看到目前的工作路径了没:

C:\Users\Administrator>

把之前下载的

Pillow-10.0.0-cp38-cp38-win_amd64.whl 以及

scikit_image-0.21.0-cp38-cp38-win_amd64.whl

复制到C:\Users\Administrator中。

输入代码安装:

pip install Pillow-10.0.0-cp38-cp38-win_amd64.whl
pip install scikit_image-0.21.0-cp38-cp38-win_amd64.whl

回车,一般都能安装成功。要是翻车了,自行百度哈。

(2)运行脚本

把脚本丢到C:\Users\Administrator中:

 打开Anaconda Powershell Prompt,弹出黑框,切换到tf2.6环境,输入:

Python JET-TIF-EXTRACT-2.py

回车,弹出APP界面。

五、码源

见微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/40606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用Apipost实现sign签名?

我们平常对外的接口都会用到sign签名,对不同的用户提供不同的apikey ,这样可以提高接口请求的安全性,避免被人抓包后乱请求。 如何用Apipost实现sign签名? 可以在Apipost中通过预执行脚本调用内置的JS库去实现预执行脚本是在发送请求之前自…

Wordcloud | 风中有朵雨做的‘词云‘哦!~

1写在前面 今天可算把key搞好了,不得不说🏥里手握生杀大权的人,都在自己的能力范围内尽可能的难为你。😂 我等小大夫也是很无奈,毕竟奔波霸、霸波奔是要去抓唐僧的。 🤐 好吧,今天是词云&#x…

【C++精华铺】8.C++模板初阶

目录 1. 泛型编程 2. 函数模板 2.1 函数模板的概念及格式 2.2 函数模板的原理 2.3 模板的实例化 2.4 模板参数的匹配原则 3. 类模板 3.1 类模板格式 3.2 类模板的实例化 1. 泛型编程 什么是泛型编程?泛型编程是避免使用某种具体类型而去使用某种通用类型来进行…

mysql中INSERT INTO ... ON DUPLICATE KEY UPDATE的用法,以及与REPLACE INTO 语句用法的异同

INSERT INTO ... ON DUPLICATE KEY UPDATE 是 MySQL 中一种用于插入数据并处理重复键冲突的语法。与之相似的还有 REPLACE INTO 语句。以下是它们的用法和异同点的详细说明: 一、INSERT INTO ... ON DUPLICATE KEY UPDATE INSERT INTO ... ON DUPLICATE KEY UPDAT…

NET域名的优势

NET域名是互联网上最常见的顶级域名之一,其开放使用日期远比其他主要顶级域名早,始于1985年。其作为商业网络服务提供者的域名,主要用于企业、组织和个人等在网络上建立自己的网站。本文将从以下三个方面介绍NET域名。 一、NET域名的历史 N…

带你了解—使用内网穿透,公网远程访问本地硬盘文件

文章目录 前言1. 下载cpolar和Everything软件3. 设定http服务器端口4. 进入cpolar的设置5. 生成公网连到本地内网穿透数据隧道 总结 前言 随着云概念的流行,不少企业采用云存储技术来保存办公文件,同时,很多个人用户也感受到云存储带来的便利…

如何使用Java代码收集网站所有功能

使用Java代码收集网站所有功能的步骤可以这么实现: 1. 使用JSoup等工具解析网站首页HTML,获取超链接、表单等元素。 Document doc JSoup.connect("http://website.com").get(); Elements links doc.select("a[href]"); Elements forms doc.select(&qu…

学习ts(四)联合类型、交叉类型、类型断言

联合类型 使用联合类型定义属性和方法,只要符合其中一种即可 let myPhone: string | number 010-7788 // let myPhone1: string | number true 因为没有包含boolean值 会报错const fn (something: number | boolean): boolean > {return !!something }con…

【CSS动画01--登录】

CSS动画01--登录 介绍代码HTMLCSSJS 介绍 当鼠标不同方向的划过时展示不同效果的登录&#xff0c;以上是一个简单的图片展示 代码 HTML <!DOCTYPE html> <html> <head><meta http-equiv"content-type" content"text/html; charsetutf-8&…

生物笔记——暑期学习笔记(四)

生物笔记——暑期学习笔记&#xff08;四&#xff09; 文章目录 前言一、R篇1. unname()2. duplicated()3. 数据提取4. 分组 二、生信篇1. 文本处理常用命令2. 命令输出1. 重定向2. 多命令执行 3. 文本工具4. 本地hmm鉴定1. hmmer软件安装2. 文件准备3. 基于hmm的鉴定 总结 前言…

【制作npm包5】npm包制作完整教程,我的第一个npm包

制作npm包目录 本文是系列文章&#xff0c; 作者一个橙子pro&#xff0c;本系列文章大纲如下。转载或者商业修改必须注明文章出处 一、申请npm账号、个人包和组织包区别 二、了解 package.json 相关配置 三、 了解 tsconfig.json 相关配置 四、 api-extractor 学习 五、npm包…

MySQL的配置文件my.cnf与my.ini

一、my.cnf与my.ini win系统&#xff0c;MySQL配置文件为my.ini 其他系统&#xff08;Ubuntu、CentOS、macOS)MySQL配置文件为my.cnf 二、my.cnf与my.ini的路径 2.1 默认路径 MySQL 的配置文件 my.cnf 可能位于多个位置&#xff0c;具体取决于安装方式和操作系统。以下是一…

Redis如何处理内存溢出的情况?

当Redis的内存使用达到上限时&#xff0c;会出现内存溢出的情况。Redis提供了几种处理内存溢出的机制&#xff1a; 内存淘汰策略&#xff1a;Redis提供了多种内存淘汰策略&#xff0c;用于在内存不足时选择要移除的键。常见的淘汰策略包括&#xff1a; LRU&#xff08;Least Re…

2023年国赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…

Kotlin开发笔记:使用委托进行拓展

Kotlin开发笔记&#xff1a;使用委托进行拓展 导言 在OO语言(面向对象)中&#xff0c;我们经常会用到委托或者代理的思想。委托和代理在乍一看很相似&#xff0c;其实其各有各的侧重点&#xff0c;这里我引用ChatGpt的回答&#xff1a; 委托&#xff08;Delegation&#xff09…

探索C语言中的常见排序算法

探索C语言中的常见排序算法 排序算法是计算机科学中至关重要的基础知识之一&#xff0c;它们能够帮助我们对数据进行有序排列&#xff0c;从而更高效地进行搜索、插入和删除操作。在本篇博客中&#xff0c;我们将深入探讨C语言中的一些常见排序算法&#xff0c;包括它们的工作…

在C中使用Socket实现多线程异步TCP消息发送

目录 基础知识开始实现主要函数说明结束语 在本篇文章中&#xff0c;我们会探讨如何在C语言中使用socket来实现多线程&#xff0c;异步发送TCP消息的系统。虽然C标准库并没有原生支持异步和多线程编程&#xff0c;但是我们可以结合使用POSIX线程&#xff08;pthread&#xff09…

Java解决四大查找(一)

Java解决四大查找 一.线性查找1.1 题目1.2 思路分析1.3 代码演示 二.二分查找(双指针法)2.1 题目2.2 思路分析(图解加文字)2.3 代码演示 一.线性查找 1.1 题目 在数组{1&#xff0c;8&#xff0c;1024&#xff0c;521&#xff0c;1889}中查找数字8&#xff0c;如果有&#xff…

【知识分享】高防服务器的防御机制

【知识分享】高防服务器的防御机制 易受到攻击的网站选择接入高防服务更安全&#xff0c;大家对于这个都清楚!但是对于高防服务如何实现防御来保障安全的&#xff0c;又了解多少呢?今天壹基比小源&#xff08;贰伍壹叁壹叁壹贰玖捌&#xff09;就来说说高防服务实现防御的常规…

地址解析协议-ARP

ARP协议 无论网络层使用何种协议&#xff0c;在实际网络的链路上传输数据帧时&#xff0c;最终必须使用硬件地址 地址解析协议&#xff08;Address Resolution Protocol&#xff0c;ARP&#xff09;&#xff1a;完成IP地址到MAC地址的映射&#xff0c;每个主机都有一个ARP高速缓…