首页下载资源人工智能使用OpenCV-Python实现灰度化、二值化等基本处理

ZIP使用OpenCV-Python实现灰度化、二值化等基本处理

m0_74094746553.04KB需要积分:1

资源文件列表:

Deom.zip 大约有12个文件
  1. getProcess.py 2.66KB
  2. Picture/
  3. Picture/1.jpg 68.18KB
  4. Picture/2.jpg 66.28KB
  5. Picture/3.jpg 67.79KB
  6. Picture/4.jpg 58.36KB
  7. Picture/5.jpg 48.59KB
  8. Picture/6.jpg 67.17KB
  9. Picture/7.jpg 57.89KB
  10. Picture/8.jpg 62.29KB
  11. Picture/9.jpg 50.09KB
  12. Picture/fdzDtORwQD.jpg 14.85KB

资源介绍:

对OpenCV、图像处理方法进行简介与操作介绍,实现了对文件夹中每个手写图像进行灰度化、二值化、膨胀和连通组件分析的基本流程并包含了错误处理和文件过滤
#处理一个包含手写图像的文件夹,对每个图像进行灰度化、二值化、膨胀 图像处理操作, # 并使用连通组件分析来识别和标记小于一定面积的区域 import cv2 as cv # 导入OpenCV库,并简称为cv import numpy as np # 导入NumPy库,用于数学运算和数组操作 import os # 导入os库,用于处理文件和目录 # 设置原始图像文件夹路径 orig_path = r"D:\Blog\work2\Picture" img_list = [f for f in os.listdir(orig_path) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp'))] # 列出文件夹中所有图像文件的名称 # 创建一个3x3的单位矩阵作为膨胀操作的核 kernel = np.ones((3, 3), np.uint8) # 遍历文件夹中的每个图像文件 for img_name in img_list: img_path = os.path.join(orig_path, img_name) # 构建图像的完整路径 img = cv.imread(img_path) # 读取图像 if img is None: # 如果图像读取失败(例如文件不是图像或文件损坏) print(f"Warning: Unable to read image {img_name}") # 打印警告信息 continue # 跳过当前循环迭代,继续下一个图像 img_resize = cv.resize(img, (600, 600)) # 将图像大小调整为600x600 img_gray = cv.cvtColor(img_resize, cv.COLOR_RGB2GRAY) # 将图像转换为灰度图 ret, img_bw = cv.threshold(img_gray, 200, 255, cv.THRESH_BINARY) # 使用固定阈值进行二值化处理 img_open = cv.dilate(img_bw, kernel, iterations=3) # 对二值图像进行3次膨胀操作 #cv.imshow("img_open", img_open) #图像膨胀后 # 使用连通组件分析,找出图像中的所有连通区域及其属性 num_labels, labels, stats, centroids = \ cv.connectedComponentsWithStats(img_open, connectivity=8, ltype=None) # 遍历每个连通区域的统计信息 for i, sta in enumerate(stats): if i == 0: # 忽略背景区域(标签为0的区域) continue if sta[4] < 1000: # 如果区域的面积小于1000像素 # 在原二值膨胀图像上标记该区域(用红色填充) cv.rectangle(img_open, tuple(sta[0:2]), tuple(sta[0:2] + sta[2:4]), (0, 0, 255), thickness=-1) # 展示图像 #cv.imshow("img_resize", img_resize)#原图 #cv.imshow("img_gray", img_gray)#灰度处理后 #cv.imshow("img_bw", img_bw) # 二值处理后 #cv.imshow("img_bw", img_bw) # 二值处理后 cv.imshow("img_open", img_open)#连通后 # 等待用户按键,如果按下'q',则退出循环 if cv.waitKey(0) & 0xFF == ord('q'): break #print("*" * 50) # 打印分割线 cv.destroyAllWindows() # 销毁所有OpenCV创建的窗口
100+评论
captcha