图像识别算法初代

基于公司内部要搞细胞培养产品,后台图像算法有我维护编写。手写初版图个乐呵。主要是用于细胞图像处理,细胞计数。细胞活性检测等领域。巴拉巴拉。。。。。。。。

不装了,我摊牌了,我是个老油条,浑水摸鱼的,奥力给

因为anquanbaomi原因,核心算法不做赘述

环境:Ubuntu/windows、 python3.5~python3.9、 opencv库,numpy...

文件结构:

 (需要图片的私聊我,在这里就不放了)

上菜

import cv2
import numpy as np

img = cv2.imread("../image/xx.jpg", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((2, 2), np.uint8)  # 进行腐蚀膨胀操作
erosion = cv2.erode(gray, kernel, iterations=5)  # 膨胀
dilation = cv2.dilate(erosion, kernel, iterations=5)  # 腐蚀
ret, thresh = cv2.threshold(dilation, 150, 255, cv2.THRESH_BINARY)  # 二值法
thresh1 = cv2.GaussianBlur(thresh, (3, 3), 0)  # 高斯滤波
contours, hirearchy = cv2.findContours(thresh1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  # 找出连通域
# 对连通域面积进行比较
contours1 = []  # 建立空数组,放减去最小面积的数
for i in contours:
    if cv2.contourArea(i) > 30:  # 计算面积 去除面积小的 连通域
        contours1.append(i)
print(len(contours1) - 1)  # 计算连通域个数
draw = cv2.drawContours(img, contours1, -1, (0, 255, 0), 1)  # 描绘连通域
# 求连通域重心 以及 在重心坐标点描绘数字
for i, j in zip(contours1, range(len(contours1))):
    M = cv2.moments(i)
    cX = int(M["m10"] / M["m00"])
    cY = int(M["m01"] / M["m00"])
    draw1 = cv2.putText(draw, str(j), (cX, cY), 1, 1, (255, 0, 255), 1)  # 在中心坐标点上描绘数字
# 展示图片
roi = cv2.selectROI(windowName="EJ_liu_roi", img=img, showCrosshair=True, fromCenter=False)

x, y, w, h = roi

cv2.rectangle(img=img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255), thickness=2)
# 选取框

cv2.namedWindow("EJ_liu", 0)
cv2.resizeWindow("EJ_liu", 1200, 800)
cv2.imshow("EJ_liu", draw)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 释放窗口

嗯,简单点就是这个样子,白嫖的大佬的。给你们两图,做做实验还是可以的。没事私聊我也可以。让我也摸会鱼嘻嘻。

图片处理前照片

41.jpg

处理后

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值