opening = cv2.morphologyEx(dst_2, cv2.MORPH_OPEN, kernel)
时间: 2024-05-28 16:13:57 浏览: 15
这段代码使用了OpenCV中的形态学操作函数`cv2.morphologyEx()`来对图像进行形态学操作。具体来说,它对名为`dst_2`的图像进行了开运算操作,使用了一个名为`kernel`的结构元素。开运算操作是指先对图像进行腐蚀操作,再对腐蚀后的图像进行膨胀操作,可以用来消除图像中的小亮斑点或暗斑点,平滑边缘等。`kernel`表示结构元素,可以是矩形、椭圆形或者自定义形状,它用来定义腐蚀和膨胀的形状和大小。
相关问题
while True: if np.sum(dst) == 0: break kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (7, 7)) dst = cv2.erode(dst, kernel, None, None, 1) open_dst = cv2.morphologyEx(dst, cv2.MORPH_OPEN, kernel) result = dst - open_dst skeleton = skeleton + result cv2.imshow('skeleton', skeleton) cv2.waitKey(1)
这段代码是在进行形态学细化(Skeletionization)操作,用于把一个二值图像细化成单像素宽度的骨架。具体解释如下:
1. `while True:` 表示一个无限循环,只有满足退出条件才会退出。
2. `if np.sum(dst) == 0: break` 表示当 `dst` 中所有像素的和为0时,退出循环。这里的 `dst` 是一个二值图像,如果所有像素的和为0,则说明已经细化到只剩下骨架了。
3. `kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (7, 7))` 创建一个 7x7 的十字形结构元素。
4. `dst = cv2.erode(dst, kernel, None, None, 1)` 使用 `erode()` 函数进行腐蚀操作,把图像中的白色区域变小一点。
5. `open_dst = cv2.morphologyEx(dst, cv2.MORPH_OPEN, kernel)` 使用 `morphologyEx()` 函数对 `dst` 进行开运算,去掉小的白色块。
6. `result = dst - open_dst` 用 `dst` 减去 `open_dst`,得到细化后的骨架。
7. `skeleton = skeleton + result` 把每次得到的骨架累加到 `skeleton` 中。
8. `cv2.imshow('skeleton', skeleton)` 显示细化后的骨架。
9. `cv2.waitKey(1)` 等待键盘输入,等待时间为1毫秒。
这段代码可以用于数字识别等应用场景中,对于一张手写数字的二值图像,通过形态学细化可以得到数字的骨架,从而更好地提取数字的特征。
import cv2 import numpy as np img = cv2. imread(' blood. BMP',-1) cv2. imshow("source".img) dst = cv2.blur(img,(3,3)) ret, thresh = cv2.threshold(dst,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) cv2. imshow("thresh".thresh) kernel = np.ones((4,4),np.uint8) opening = cv2.morphologyEx (thresh,cv2. MORPH_OPEN,kernel,iterations=2) kernel1 = np.ones((3, 3).np.uint8) close = cv2.morphologyEx(openning,cv2.MORPH_CLOSE,kernel1) cv2. imshow("opening",close) temp = close.copy () h, w = close. shape[:2] mask= np.zeros((h+2,w+2).np.uint8) cv2.floodFill(temp,mask,(230,145),255) temp_inv = cv2.bitwise_not(temp) result = close|temp_inv cv2. imshow("result",result) contours, hirearchy = cv2. findContours(result,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) count = 0 area = 0 for i in contours: if cv2.contourArea(i)>73: area+=cv2.contourArea(i) count+=1 count1 = 0 for i in contours: if cv2. contourArea(i)>73: count1+=1 if cv2. contourArea(i)>(1.25*area/count): count1+=1 if cv2. contourArea(i)>(2.1*area/count): count1+=1 print("细胞有%d个"%count1) cv2. waitKey(0)
这段代码中有一些语法错误和拼写错误。以下是修正后的代码:
```
import cv2
import numpy as np
img = cv2.imread('blood.BMP', -1)
cv2.imshow("source", img)
dst = cv2.blur(img, (3, 3))
ret, thresh = cv2.threshold(dst, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
cv2.imshow("thresh", thresh)
kernel = np.ones((4, 4), np.uint8)
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2)
kernel1 = np.ones((3, 3), np.uint8)
close = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel1)
cv2.imshow("opening", close)
temp = close.copy()
h, w = close.shape[:2]
mask = np.zeros((h+2, w+2), np.uint8)
cv2.floodFill(temp, mask, (230, 145), 255)
temp_inv = cv2.bitwise_not(temp)
result = close | temp_inv
cv2.imshow("result", result)
contours, hierarchy = cv2.findContours(result, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
count = 0
area = 0
for i in contours:
if cv2.contourArea(i) > 73:
area += cv2.contourArea(i)
count += 1
count1 = 0
for i in contours:
if cv2.contourArea(i) > 73:
count1 += 1
if cv2.contourArea(i) > (1.25 * area / count):
count1 += 1
if cv2.contourArea(i) > (2.1 * area / count):
count1 += 1
print("细胞有%d个" % count1)
cv2.waitKey(0)
```
注意:这段代码仅供参考,可能还需要根据实际情况进行调整和修改。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)