Python计算细胞核与细胞质的面积比opencv或pil实验

前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家。(点击跳转人工智能学习资料)


一、题目

根据附件cell.jipg,使用opencv库或者PIL库计算细胞核与细胞质的面积比。

二、题目分析

这道题目识别细胞的时候,要分别识别细胞核和细胞膜。对此进行操作的时候,首先需要将图像转化成灰度图像。接着需要将灰度图像二值化,通过threshold方法传入灰度图像和阙值,我们根据细胞核和细胞膜的颜色得到核的阙值为131,细胞质的阙值为220,然后第三个参数传入最大阙值255,第四个参数为THRESH_BINARY,表示二进制化阙值。
然后根据内核的大小,抛弃掉边界附近的像素。kernel =np.ones((2,2),np.uint8),在这里我们使用2*2的内核,它包含了所有的1。之后通过开运算传入图像,内核等进行计算。接着通过canny函数进行边界检测,查找出轮廓然后提取边框。通过findContours传入检测到的边缘。最后通过两个列表储存边框面积,获取最大面积对应的索引框,通过计算得出的细胞核和细胞质的大小相除就得到了核质比

三、代码

import cv2
import numpy as np
img = cv2.imread("cell.jpg")
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("gary", gray)
# 二值化
thresh1, Cellmask = cv2.threshold(gray, 220, 255, cv2.THRESH_BINARY)
thresh2, Coremask = cv2.threshold(gray, 131, 255, cv2.THRESH_BINARY)
# 开运算
kernel = np.ones((2, 2), np.uint8)
Cellmask = cv2.morphologyEx(Cellmask, cv2.MORPH_OPEN, kernel)
Coremask = cv2.morphologyEx(Coremask, cv2.MORPH_OPEN, kernel)# 边缘检测
cannyCell = cv2.Canny(Cellmask, 40, 200)
cannyCore = cv2.Canny(Coremask, 40, 200)
# 边框提取
Cell, Celldata = cv2.findContours(cannyCell, mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_NONE)
Core, Coredata = cv2.findContours(cannyCore, mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_NONE)# 存储边框面积
CellS = []
CoreS = []
for i in range(len(Cell)):CellS.append(cv2.contourArea(Cell[i]))
for i in range(len(Core)):CoreS.append(cv2.contourArea(Core[i]))
# 获取最大面积对应边框索引
Maxcell = CellS.index(max(CellS))
Maxcore = CoreS.index(max(CoreS))cv2.drawContours(img, Cell, Maxcell, (0, 255, 0), 1)
cv2.drawContours(img, Core, Maxcore, (0, 0, 255), 1)
cv2.imshow("Cellmask", cannyCell)
cv2.imshow("Coremask", cannyCore)
cv2.imshow("img", img)print("核质面积比为:{:.3f}".format(max(CoreS) / (max(CellS)-max(CoreS))))
cv2.waitKey()

在这里插入图片描述

四、实验结果

在这里插入图片描述
在这里插入图片描述


OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。

为什么有OpenCV?
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
1、研究代码(慢,不稳定,独立并与其他库不兼容)
2、耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
3、依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。
OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。图1为OpenCV与当前其他主流视觉函数库的性能比较。

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

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

相关文章

Ollydbg使用教程学习总结(二)

解密系列之OD使用教程4 程序1:RegisterMe.exe 把程序跑一遍之后我们发现程序有两个NAG,一个是在程序界面启动前出现,另一个是在程序关闭后出现的。 去掉第一个Nag方法如下: ①jmp跳过 ②全部nop掉 ③令hOwner参数为1&#xf…

Python基于Django的电影推荐系统和论坛项目完整源码

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 微信公众号:创享日记 发送:电影论坛 获…

Ollydbg使用教程学习总结(三)

解密系列之OD使用教程9 程序:MrBills.exe 点击注册,输入邮箱和序列号后提示如下 突破口:该提示窗口中的字符串,查找如下 双击来到反汇编窗口,有个关键跳转,往上查看影响跳转的语句是test al,al&#xf…

Python用matplotlib绘制曲线实验

一、题目 计算出每组数据的均值和标注差,用matplotlib画出如下风格。横轴是每组的序号,即1,2,… 10,曲线的圆点对应均值,颜色范围为标注差,显示垂直和水平网格线。 二、题目分析 首先分析这…

Ollydbg使用教程学习总结(五)

解密系列之OD使用教程17——inline patch 程序:ReverseMe. NAGs.exe 新内容:硬件断点 用PEID打开,看到程序是用VC6.0写的,用OD载入,按F9运行后,出现NAG窗口,在OD中按下暂停,再打开堆…

Python的Wine数据集分类scikit-learn和K近邻实验

一、题目 请使用scikit-learn库和K近邻分类器完成Wine数据集的分类,训练比例自定。(数据下载: https://archive.ics.uci.edu/ml/datasets/Wine) 二、题目分析 这道题目就是获取数据然后分类的过程。首先在网站上下载好数据。然后回到Pycharm导入实验所需要的skle…

[MEGA DEAL]完整的Java捆绑包(96%折扣)

深入了解编程奥德赛(58小时!),进入最常用的编程语言 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了另一个超值优惠 。 我们为The Complete Java Bundle提供96%的…

基于PLC十字路口交通灯控制(可计算车流量、调整时间等)课程设计毕业设计

微信公众号:创享日记 发送:plc交通灯 获取完整论文报告(内含梯形图程序、无水印流程图等) 按照城市交通控制的需要,本文讨论了用PLC实现正常时序、急车强通2种控制方式,通过传感器与PLC完成对交通异常状况&…

Ollydbg使用教程学习总结(四)

解密系列之OD使用教程13——迷途 程序:XoftSpy41._96.exe 用PEID查看,是VC6编写的程序,用OD载入 获取文本框输入内容API:GetWindowTextA API下断方法: a.右键>查找>所有模块间的调用,直接输入API&am…

基于PLC高层楼房供水系统课程设计毕业设计

设计目的 (1)能够检测到水箱的水位并用指示灯显示。 (2)由检测到水箱的水位,实现3台电机的供水要求。 (3)设计plc程序。 设计要求 (1)确定输入/输出设备。 (…

基于PLC四层电梯模型控制系统课程设计

总设计要求 1.1 电梯上行设计要求 ①当电梯停于1F或2F、3F时,4F呼叫,则上行到4F, 碰行程开关后停止。 ②当电梯停于1F或2F时,3F呼叫,则_上行到3F,碰行程开关后停止。 ③当电梯停于1F时,2F 呼叫…

基于西门子PLC s7-200 的自动立体车库设计自动化设计(控制器步进电机直流电机)

本组的设计题目是《基于 PLC 的立体车库设计》,本组设计包括机械设计,电路设计以及程序设计。在设计中遇到了很多困难,参考了相关资料,与老师进行多次沟通,一边学习一边制作,以厂家资料为标准进行修改&…

基于51单片机的8八路抢答器设计

基于51单片机的8路抢答器 具体功能: (1)主持人进行复位,依次显示8位选手的分数,8位选手分数显示结束后主持人方可按下开始按键; (2)主持人按下抢答开始按键,抢答者才可以…

基于51单片机的简易抢答器设计

基于51单片机的简易抢答器 具体功能: 1、主持人按下抢答开始按键,抢答者才可以开始抢答,数码管抢答倒计时20S。 2、抢答者按下按键,数码管显示抢答者的编号。 3、可以通过按键修改倒计时时间。 部分程序代码: #incl…

Word2019中Visio对象图片插入题注时自动删除标签与编号前的空格,编号后添加空格

问题引入 撰写论文时为了修改方便,通常以插入题注和交叉引用的方式来给图片标号,这样修改图片和图号后可以方便、自动地更新。 然而,Word在插入题注上从03到13一直没有针对中国用户优化。 插入题注的标签与编号间有一个空格,当…

【32位win7一键扫雷】32位win7系统自带扫雷游戏逆向分析之一键扫雷(附VS代码工程文件、可执行文件和OD分析缓存文件)

实现效果 视频地址:https://www.zhihu.com/zvideo/1373742900744974336 附一张扫雷自定义中难度最大时进行一键扫雷的截图,如下,24*30,共668颗雷。 前言 一直对逆向感兴趣,就拿最简单的扫雷开始,对于XP系统中的扫雷,雷的数目以及雷区的地址都是固定的,可以直接通过…

基于51单片机的智能电子秤设计课程设计毕业设计

微信公众号:创享日记 对话框发送:单片机电子秤 获取仿原理图、真源文件、源程序代码和论文报告等 由STC89C51单片机最小系统LCD1602液晶显示模块HX711AD模块LED模块蜂鸣器按键模块10kg压力传感器构成。 具体功能: 1、数码管显示当前的重量&a…

【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序(附VS工程代码文件和可执行文件)

运行效果 代码结构 //黑客帝国数字雨 花心胡萝卜 #包含 <windows.h> #包含 <stdlib.h>#define 时钟编号 1 #define 最大长度 25 //一个显示列的最大长度 #define 最小长度 8 //一个显示列的最小长度 // 类型定义 结构类型 _字符序列 {//整个当作屏幕的一个显示列…

【模式识别】Fisher线性判别实验报告之MATLAB仿真

一、 参数 1.题设三个类,每个类均有10个样本,分别为w1,w2,w3,因此采用两两互相分类,最后得出结果; 2.三类样本的均值向量依次为m1,m2,m3; 3.三类样本的类内离散度矩阵依次为S1,S2,S3; 4.对于w1和w2,总类内离散度矩阵为Sw12,类间离散度矩阵为Sb12,通过矩阵特…

不知所措:您是否真的需要为您的API提供客户端库?

RESTful Web服务和API的优点在于&#xff0c;任何使用HTTP协议的使用者都可以理解和使用它。 但是&#xff0c;同样的难题一遍又一遍地弹出&#xff1a;您是否应该将Web APis与客户端库一起使用&#xff1f; 如果是&#xff0c;您应该支持哪些语言或/和框架&#xff1f; 通常这…