怎么在Python中使用opencv截取图片

  介绍

这篇文章将为大家详细讲解有关怎么在Python中使用opencv截取图片,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Python的五大特点是什么

Python的五大特点:1。简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2。面向对象,与其他主要的语言如c++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。3。可移植性,Python程序无需修改就可以在各种平台上运行。4。解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5。开源,Python是牙线(自由/开放源码软件)之一。

一、手动单张裁剪/截取

<强> selectROI :选择感兴趣区域,边界框框选x, y, w h

<强> selectROI (img, windowName showCrosshair=None, fromCenter=None):
。参数windowName:选择的区域被显示在的窗口的名字
。参数img:要在什么图片上选择ROI
。参数showCrosshair:是否在矩形框里画十字线。
。参数fromCenter:是否是从矩形框的中心开始画

要截取的原图如下:

怎么在Python中使用opencv截取图片”> <br/> </p> <p>截取效果如下:<br/> </p> <p> <img src= import  cv2      时间=img  & # 39; D:/anaconda3 JupyterNotebookFile/图片/dogs_and_cats.jpg& # 39;   时间=img  cv2.imread (img)   cv2.imshow(& # 39;原始# 39;,,img)      #,选择ROI   时间=roi  cv2.selectROI (windowName=皁riginal",, img=img, showCrosshair=True,, fromCenter=False)   w, x,, y,, h =, roi   打印(roi)      #,显示ROI并保存图片   if  roi  !=, (0, 0, 0, 0):   ,,,crop =, img [y: y + h, x: x + w)   ,,,cv2.imshow(& # 39;作物# 39;,,作物)   ,,,cv2.imwrite (& # 39; D:/anaconda3 JupyterNotebookFile/图片/dogs_and_cats_crop.jpg& # 39;,,作物)   ,,,print(& # 39;得救了! & # 39;)      #,退出   cv2.waitKey (0)   cv2.destroyAllWindows ()

读者根据自己的图片目录修改目标图片目录和要写入的目录。

二,根据图片的位置坐标进行裁剪/截取

怎么在Python中使用opencv截取图片”> <br/> </p> <p>这是一张432×432大小的图片,左上角坐标为(0,0)。</p> <pre class= import  cv2   我=,cv2.imread(& # 39;图片路径& # 39;)

在用cv2.imread()默认读取三通道RGB图像后,会返回一个三维数组。同时,可用im (h, w)的形式来截取图片中的某个部分,比如中间柴犬的位置相对左上角坐标原点为,从上到下为190 - 380,从左往右为180 - 260。这样就可以通过坐标的相对位置来裁剪/截取目标图像了。

完整代码如下:

import  cv2   import 操作系统      时间=file_path  & # 39; D:/anaconda3 JupyterNotebookFile/图片/dogs_and_cats.jpg& # 39;   时间=out_file_name  & # 39; dogs_and_cats_cropp& # 39;      我=,cv2.imread (file_path)   我=,im (190:380,180:260)   save_path =, " # 39; D:/anaconda3/JupyterNotebookFile/图片# 39;   时间=save_path_file  os.path.join (save_path out_file_name + & # 39; jpg # 39;)   cv2.imwrite (save_path_file im)

截取后的图片效果:

怎么在Python中使用opencv截取图片

<强>若很多个图片数据具有相似的位置,则可以通过遍历文件的方式批量裁剪/截取,代码如下:

import  cv2   import 操作系统      def  clip_image(文件列表,我,im_path):,,   & # 39;& # 39;& # 39;   文件列表:文件夹路径   我:批量保存的图片文件名,用数字表示   im_path:图片路径   & # 39;& # 39;& # 39;,,   ,,,for  file 拷贝文件列表:   ,,,,,,,file_path=os.path.join (im_path、文件)   ,,,,,,,我=cv2.imread (file_path)   ,,,,,,,# (h, w)根据自己图片中目标的位置修改   ,,,,,,,我=im (190:380,180:260),,,,,,,,,,,,,,,,,,,,,,   ,,,,,,,save_path =, " # 39; D:/anaconda3/JupyterNotebookFile/图片# 39;   ,,,,,,,save_path_file =, os.path.join (save_path out_file_name + & # 39; jpg # 39;),,,,,,,,,,,   ,,,,,,,cv2.imwrite (save_path_file, im),,,,,,,,,,,,   ,,,,,,,我+ 1=

怎么在Python中使用opencv截取图片