数染色体 算法 python源码

效果图如下:

原图:

完整代码:

python 复制代码
import cv2
import numpy as np
from skimage import measure
import random


image = cv2.imread('113.jpg', cv2.IMREAD_GRAYSCALE)

blurred_img = cv2.GaussianBlur(image, (5, 5), 0)

_, binary_image = cv2.threshold(blurred_img, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

kernel = np.ones((3, 3), np.uint8)
img2 = cv2.morphologyEx(binary_image, cv2.MORPH_OPEN, kernel, iterations=2)

labels = measure.label(img2, connectivity=2, background=0)
props = measure.regionprops(labels)

output_image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)

colors = []
for _ in range(len(props)):
    colors.append((random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))

chromosome_count = len(props)
chromosome_sizes = []

for i, prop in enumerate(props):
    y, x = prop.centroid
    center = (int(x), int(y))

    cv2.circle(output_image, center, 5, colors[i], -1)

    cv2.putText(output_image, f'{i+1}', (center[0] + 10, center[1]), cv2.FONT_HERSHEY_SIMPLEX, 0.5, colors[i], 1)

    chromosome_sizes.append(prop.area)

print(f"染色体数量: {chromosome_count}")
print(f"每个染色体的尺寸(像素数量): {chromosome_sizes}")

cv2.imshow('img2', img2)
cv2.imshow('output_image', output_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
愈努力俞幸运几秒前
yaml 入门教程
python
leoufung7 分钟前
LeetCode 64. Minimum Path Sum 动态规划详解
算法·leetcode·动态规划
一起养小猫11 分钟前
LeetCode100天Day7-移动零与搜索插入位置
数据结构·算法·leetcode·指针
ullio12 分钟前
div1+2. 2178E - Flatten or Concatenate
算法
yu_anan11115 分钟前
PPO/GRPO算法在RLHF中的实现
算法
leoufung16 分钟前
Word Break:深度理解 DP 前缀结束点的核心思想
算法·word·动态规划
Aaron158816 分钟前
三种主流接收机架构(超外差、零中频、射频直采)对比及发展趋势浅析
c语言·人工智能·算法·fpga开发·架构·硬件架构·信号处理
2401_8414956416 分钟前
【游戏开发】坦克大战
python·游戏·socket·pygame·tkinter·pyinstaller·坦克大战
liu****17 分钟前
04_Pandas数据分析入门
python·jupyter·数据挖掘·数据分析·numpy·pandas·python常用工具
2501_9181269122 分钟前
用Python开发一个三进制程序开发工具
开发语言·汇编·python·个人开发