机器视觉第八次实验
一、实验目的
通过OpenCV第八次进行实验,对图片进行医学处理。
二、实验内容
对图片进行医学处理。
三、实验过程
我使用的是python语言+openCV对图片进行医学处理的功能。实验过程我们需要导入的库有import cv2;from skimage import morphology, io;import matplotlib.pyplot as plt
1)读取图片
我们采用直接读取图片并直接将其灰度化,使用imread()函数读取图片,
代码实例:
img = cv2.imread("vas0.bmp",0) cv2.imshow("img",img) cv2.waitKey()
扫描二维码关注公众号,回复:
10796625 查看本文章
图3.1图片读取
2)阈值分割
使用adaptiveThreshold()函数进行计算:
实例代码:
#阈值分割 th=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2) cv2.imshow('th', th) cv2.waitKey(0)
图3.2阈值分割后的图片
3)图片反色
输入的代码:
#图像反色 img1 = th.copy() cv2.threshold(th,80,255,0,th) for i in range(0,th.shape[0]): for j in range(0,th.shape[1]): img1[i,j] = 255-th[i,j] # cv2.imshow("img1",img1) # cv2.waitKey(0) plt.imshow(img1,cmap=plt.cm.gray) plt.axis('off') plt.show()
图3.3反色后的图片
4)图像扩展
实例代码:
#图像扩展 img2 = cv2.copyMakeBorder(img1,1,1,1,1,cv2.BORDER_REFLECT) plt.imshow(img2,cmap=plt.cm.gray) plt.axis('off') plt.show()
图3.4扩展后的图像
5)去除图片较小面积的区域并保存
实例代码:
#去除较小面积的区域 img3 = morphology.remove_small_holes(th,200) plt.imshow(img3,cmap=plt.cm.gray) plt.axis('off') plt.show()
图3.5.1去除较小面积的区域(1)
img3 = morphology.remove_small_holes(th,1000) plt.imshow(img3, cmap=plt.cm.gray) plt.axis('off') plt.savefig("jpg") plt.show()
图3.5.2去除较小面积的区域(2)
6)细化图片
实例代码:
image = cv2.imread("jpg.png") #实施骨架算法 image1 =morphology.skeletonize(image) #显示结果 plt.imshow(image1) plt.axis('off') plt.show()
7)边缘检测
实例代码:
#边缘检测 image2 = cv2.Canny(image,80,255) cv2.imshow("image2",image2) cv2.waitKey(0)
图3.7边缘检测的图片
8)图片反色
实例代码:
#图片反色 image3 = image2.copy() for i in range(0,image2.shape[0]): for j in range(0,image2.shape[1]): image3[i,j] = 255-image2[i,j] cv2.imshow("image3",image3) cv2.waitKey(0)
图3.8图片反色
四、实验中的错误
1)安装我们所需要的库,不然会报错,我首先使用pip install skimage,这样安装出来的会报错;
图4.1.1安装scikit-image库出错案例
百度了一下以后我发现这个库的大名是叫scikit-image,我们就使用pip install scikit-image。
图4.1.2解决安装scikit-image库出错的问题
五、实验总结
学习了OpenCV的医学处理技术,提升了自己的能力。