怎么在Python中使用OpenCV裁剪图像的指定区域

  介绍

怎么在Python中使用OpenCV裁剪图像的指定区域?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>一、指定图像位置的裁剪处理

import  os ,   import  cv2    ,   #,遍历指定目录,显示目录下的所有文件名   def  CropImage4File (filepath destpath):   时间=pathDir 才能;os.listdir (filepath),, #,列出文件路径中的所有路径或文件   for 才能;allDir  pathDir:拷贝   ,,,child =, os.path.join (filepath, allDir)   ,,,dest =, os.path.join (destpath allDir)   ,,,if  os.path.isfile(孩子):   ,,,,image =, cv2.imread(孩子),   ,,,,,sp =, image.shape ,,,,, #获取图像形状:返回【行数值,列数值】列表   ,,,,,sz1 =, sp[0],,,,,,,,, #图像的高度(行,范围)   ,,,,,sz2 =, sp[1],,,,,,,,, #图像的宽度(列,范围)   ,,,,,# sz3 =, sp[2],,,,,,,, #像素值由【RGB】三原色组成   ,,,,,   ,,,,,#你想对文件的操作   ,,,,,a=int (sz1/2 - 64), #, x 开始   ,,,,,b=int (sz1/2 + 64), #, x 结束   ,,,,,c=int (sz2/2 - 64), #, y 开始   ,,,,,d=int (sz2/2 + 64), #, y 结束   ,,,,,cropImg =,图像(a, b, c, d),, #裁剪图像   ,,,,,cv2.imwrite(桌子,cropImg), #写入图像路径   ,,,,,   if  __name__ ==, & # 39; __main__ # 39;:   filepath 才能=& # 39;F: \ \ \眯# 39;,,,,,,,#源图像   destpath才能=& # 39;F: \ \ maomi_resize& # 39;,,,, #, resized  images  saved 这里   CropImage4File才能(filepath destpath)

<强>二、批量处理,指定图像位置的裁剪

我这个是用来截取发票的印章区域,用于图像分割(公司的数据集保密)

各位可以用自己的增值发票裁剪。适当的更改截取区域

“““   处理数据集,和,标签数据集的代码:(主要是对原始数据集裁剪)   处才能理方式:分别处理   注才能意修改,输入,输出目录,和,生成的文件名   output_dir =,才能“。/label_temp"   input_dir =,才能“。/label"   “““   import  cv2   import 操作系统   import 系统   import 时间         def  get_img (input_dir):   时间=img_paths 才能;[]   for 才能;(路径、目录名、文件名),拷贝os.walk (input_dir):   ,,,for  filename 拷贝文件名:   ,,,,,img_paths.append(路径+ & # 39;/& # 39;+文件名)   打印才能(“img_paths:“img_paths)   return  img_paths才能         def  cut_img (img_paths output_dir):   scale 才能=,len (img_paths)   for 才能;我img_path 拷贝列举(img_paths):   ,,,a =,“#“*, int (i/1000)   ,,,b =,“!”* (int(规模/1000)int (i/1000))   ,,,c =, (i/规模)* 100   ,,,time . sleep (0.2)   ,,,print(& # 39;正在处理图像:,% & # 39;,%,img_path.split (& # 39;/& # 39;) [1])   ,,,img =, cv2.imread (img_path)   ,,,weight =, img.shape [1]   ,,,if  weight> 1600:,,,,,,,,,,,,, #,正常发票   ,,,,,cropImg =, img[50:200, 700:1500],, #,裁剪【y1, y2: x1, x2】   ,,,,,# cropImg =, cv2.resize (cropImg,,没有,,fx=0.5,=0.5,财政年度   ,,,,,,,,,,,,,,,,#插值=cv2.INTER_CUBIC), #缩小图像   ,,,,,cv2.imwrite(时间+ output_dir  & # 39;/& # 39;, +, img_path.split (& # 39;/& # 39;) [1],, cropImg)   其他,,,,,,,,,,,,,,,,,,,,,,,,#,卷帘发票   ,,,,,cropImg_01 =, img [30:150, 50:600]   ,,,,,cv2.imwrite(时间+ output_dir  & # 39;/& # 39; + img_path.split (& # 39;/& # 39;) [1],, cropImg_01)   ,,,print (& # 39;} {: ^ 3.3 f %[,{}祝辞的在{}]& # 39;.format (c, a, b))      if  __name__ ==, & # 39; __main__ # 39;:   output_dir =,才能“. ./img_cut",,,,,, #,保存截取的图像目录   input_dir =,才能“. ./img",,,,,,,, #,读取图片目录表   时间=img_paths 才能;get_img (input_dir)   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Python中使用OpenCV裁剪图像的指定区域