Python数字图像处理,python图像识别数字
这篇文章主要为大家介绍了大蟒实现数字图像处理染色体计数示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
目录
一、实验内容二、实验步骤三、代码四、结果
一、实验内容
对于下面这幅图像,编程实现染色体计数,并附简要处理流程说明。
二、实验步骤
1.中值滤波
2.图像二值化
3.膨胀图像
4.腐蚀图像
5.计算光影背景
6.移除背景
7.检测染色体
三、代码
导入cv2
将数组作为铭牌导入
# 计算光影背景
定义计算照明模式(img4):
h,w=img4.shape[0],img4.shape[1]
img5=cv2.blur(img4,(int(w/3),int(w/3)))
返回img5
# 移除背景
def removeLight(img4,img5,方法):
if method==1:
img4_32=np.float32(img4)
img5_32=np.float32(img5)
比率=img4_32/img5_32
比率[比率1]=1
辅助=1 -比率
# 按比例转换为8位格式
aux=aux * 255
aux=np.uint8(aux)
else:
aux=img5 - img4
返回辅助
极好的连接组件(辅助):
数量_对象,标签=cv2。连接组件(辅助)
如果数量_对象2:
打印(连接的组件未检测到染色体)
返回
else:
打印(连接的组件检测到染色体数量为: ,数量对象- 1)
output=np.zeros(辅助形状[0],辅助形状[1],3),np.uint8)
对于范围(1,数量_对象):中的我
掩码=标签==我
output[:0][mask]=np.random.randint(0,255)
output[:1][mask]=np.random.randint(0,255)
output[:2][mask]=np.random.randint(0,255)
返回输出
极好的连接组件状态(辅助):
数量_对象,标签,状态,质心=cv2。connectedcomponentswithstats(aux)
如果数量_对象2:
print( connectedComponentsWithStats未检测到染色体)
返回
else:
print( connectedComponentsWithStats检测到染色体数量为: ,数量对象- 1)
output=np.zeros(辅助形状[0],辅助形状[1],3),np.uint8)
对于范围(1,数量_对象):中的我
掩码=标签==我
output[:0][mask]=np.random.randint(0,255)
output[:1][mask]=np.random.randint(0,255)
output[:2][mask]=np.random.randint(0,255)
返回输出
定义查找轮廓(辅助):
轮廓,层次=cv2.findContours(aux,cv2 .RETR _外部,cv2 .CHAIN_APPROX_SIMPLE)
如果透镜(轮廓)==0:
打印(查找轮廓未检测到染色体)
返回
else:
打印(查找轮廓检测到染色体数量为: ,透镜(轮廓))
output=np.zeros(辅助形状[0],辅助形状[1],3),np.uint8)
对于范围内的我(透镜(轮廓)):
cv2。绘制轮廓(
输出,
轮廓,
我,
(np.random.randint(0,255),
(0,255),
np.random.randint(0,255)),2)
返回输出
# 读取图片
img=cv2.imread(img.png ,0)
pre_img=cv2.cvtColor(img,cv2 .COLOR_BGR2RGB) #二值化函数
# 第一步:中值滤波
# 中值滤波
img1=cv2.medianBlur(img,3)
# 显示并保存图片
cv2.imshow(灰色,img)
cv2.imshow(medianBlur ,img1)
cv2.imwrite(medianBlur.jpg ,img1)
# 第二步:图像二值化
# 图像二值化
ret,img2=cv2.threshold(img1,140,255,0,img1) #二值化函数
# 显示并保存图片
cv2.imshow(threshold ,img2)
cv2.imwrite(threshold.jpg ,img2)
# 第三步:膨胀图像
dilate_kernel=np.ones((3,3),np.uint8)
img3=cv2.dilate(img2,dilate_kernel)
# 显示并保存图片
cv2.imshow(扩张,img3)
cv2.imwrite(dilate.jpg ,img3)
# 第四步:腐蚀图像
erode_kernel=np.ones((7,7),np.uint8)
img4=cv2.erode(img3,erode_kernel)
# 显示并保存图片
cv2.imshow(侵蚀img4)
cv2.imwrite(erode.jpg ,img4)
#年#月#日魏冄:范国祥
img 5=计算照明模式(img 4)
#年#月#日1746年
cv2.imshow(LightPattern,img5)
cv2。imrite(光模式。jpg ,img5)
#年#月#日魏冄:云
aux=removeLight(img4,img 5.1)
#年#月#日1746年
cv2.imshow(removeLight ,aux)
cv2。imrite( removelight。jpg ,au)
#年#月#日:你好
输出1=连接组件(辅助)
输出2=连接组件状态(辅助)
输出3=查找轮廓(辅助)
#年#月#日1746年
cv 2。即时消息显示(“连接的组件”,输出1)
cv2。im rite( connectedcomponents。jpg,输出1)
cv 2。im显示(连接组件开关状态,输出2)
cv2。imrite(连接的组件swithstats。jpg,输出2)
cv2.imshow(查找轮廓,输出3 )
cv2。imrite( findcontours。jpg,输出3)
cv2.waitKey(0)
四、结果
年欧洲足球锦标赛1.张居正(音译)
2.哟哟哟哟哟哟
3.1926年
4.绿筠小姐
5.范国祥
6.云
7.吴登盛(音译)
(1)连接组件. jpg
(2)连接组件swithstats。使用jpeg文件交换格式存储的编码图像文件扩展名
(3)findContours.jpg
绿筠小姐46
python(python语言)是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,是我,郑智勇(音译)python(python语言)阿祖阿祖阿祖阿祖阿祖阿祖阿祖阿祖阿祖阿祖阿祖阿祖阿它是贺盛瑞!贺盛瑞!贺盛瑞!贺盛瑞!贺盛瑞!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。