import cv2import numpy as np# 读取图像image = cv2.imread('工件图像.jpg')# 转换为灰度图像gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用二值化处理获取缺陷图像ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 使用形态学操作进行缺陷的去噪和填充kernel = np.ones((3,3), np.uint8)closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)opening = cv2.morphologyEx(closing, cv2.MORPH_OPEN, kernel)# 获取缺陷轮廓contours, hierarchy = cv2.findContours(opening, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 遍历每一个缺陷,提取几何特征并绘制位置for i in range(len(contours)): # 获取面积和周长 area = cv2.contourArea(contours[i]) perimeter = cv2.arcLength(contours[i], True) # 获取质心 moments = cv2.moments(contours[i]) cx = int(moments['m10'] / moments['m00']) cy = int(moments['m01'] / moments['m00']) # 绘制位置和特征 cv2.drawContours(image, [contours[i]], -1, (0, 255, 0), 2) cv2.circle(image,(cx,cy), 5, (0,0,255), -1) cv2.putText(image, "Area: {:.2f}".format(area), (cx+10, cy-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 2) cv2.putText(image, "Perimeter: {:.2f}".format(perimeter), (cx+10, cy+10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 2)# 显示结果cv2.imshow('Defect Detection', image)cv2.waitKey(0)# 保存结果cv2.imwrite('Defect Detection.jpg', image)
时间: 2023-06-09 18:04:33 浏览: 118
这是Python中的两个库,cv2是OpenCV库,用于图像和视频处理,包括读取、写入、显示、处理、分析等。numpy是一个数学库,用于处理数字和数组。一般情况下,当我们读取图像时,使用cv2,而对图片进行处理时,使用numpy。
相关问题
用Python编写一下提取工件缺陷灰度特征代码包含灰度归一化均值和灰度方差
以下是用Python编写的提取工件缺陷灰度特征代码,包含灰度归一化均值和灰度方差:
import cv2
import numpy as np
def get_gray_features(image_path):
# 读取图片
img = cv2.imread(image_path)
# 将图片转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 灰度归一化均值
gray_mean = np.mean(gray_img)
# 灰度方差
gray_std = np.std(gray_img)
return gray_mean, gray_std
# 测试代码
if __name__ == "__main__":
image_path = "工件图片路径"
gray_mean, gray_std = get_gray_features(image_path)
print("灰度归一化均值:", gray_mean)
print("灰度方差:", gray_std)
请注意:这只是一个示例代码,实际应用中可能需要根据具体的需求进行修改和优化。
用Python编写一下提取工件缺陷灰度特征代码
好的,我可以帮你回答这个问题。下面是一个用Python编写的工件缺陷灰度特征提取的代码示例:
```python
import cv2
import numpy as np
def get_gray_feature(image_path):
# 读取图片
img = cv2.imread(image_path)
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算图像的平均灰度和标准差
mean_gray = np.mean(gray)
std_gray = np.std(gray)
# 返回计算结果
return mean_gray, std_gray
```
以上是一个简单的工件缺陷灰度特征提取代码示例,它使用了OpenCV库来读取和处理图像,计算了图片的平均灰度和标准差,并返回了这两个特征的值。你可以将这个代码示例作为起点,根据你的需求来进行改进和完善。
阅读全文