首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Open CV 3 python 3使用鼠标从大图像中裁剪ROI

OpenCV是一个开源的计算机视觉库,提供了丰富的图像和视频处理功能。它支持多种编程语言,包括Python。在Python中使用OpenCV 3进行图像裁剪的步骤如下:

  1. 导入必要的库和模块:
代码语言:txt
复制
import cv2
  1. 加载图像:
代码语言:txt
复制
image = cv2.imread('image.jpg')
  1. 创建一个回调函数来处理鼠标事件:
代码语言:txt
复制
def mouse_callback(event, x, y, flags, param):
    global top_left_pt, bottom_right_pt

    if event == cv2.EVENT_LBUTTONDOWN:
        top_left_pt = (x, y)

    elif event == cv2.EVENT_LBUTTONUP:
        bottom_right_pt = (x, y)
        cv2.rectangle(image, top_left_pt, bottom_right_pt, (0, 255, 0), 2)
        cv2.imshow('image', image)
  1. 注册回调函数并显示图像:
代码语言:txt
复制
cv2.namedWindow('image')
cv2.setMouseCallback('image', mouse_callback)
cv2.imshow('image', image)
cv2.waitKey(0)
  1. 根据鼠标选定的区域裁剪图像:
代码语言:txt
复制
roi = image[top_left_pt[1]:bottom_right_pt[1], top_left_pt[0]:bottom_right_pt[0]]
cv2.imshow('ROI', roi)
cv2.waitKey(0)

完整的代码如下:

代码语言:txt
复制
import cv2

def mouse_callback(event, x, y, flags, param):
    global top_left_pt, bottom_right_pt

    if event == cv2.EVENT_LBUTTONDOWN:
        top_left_pt = (x, y)

    elif event == cv2.EVENT_LBUTTONUP:
        bottom_right_pt = (x, y)
        cv2.rectangle(image, top_left_pt, bottom_right_pt, (0, 255, 0), 2)
        cv2.imshow('image', image)

image = cv2.imread('image.jpg')

cv2.namedWindow('image')
cv2.setMouseCallback('image', mouse_callback)
cv2.imshow('image', image)
cv2.waitKey(0)

roi = image[top_left_pt[1]:bottom_right_pt[1], top_left_pt[0]:bottom_right_pt[0]]
cv2.imshow('ROI', roi)
cv2.waitKey(0)

这段代码将会显示一张图像,并允许你使用鼠标在图像上拖动一个矩形框来选择感兴趣的区域(ROI)。当你松开鼠标时,程序将会在原图像上绘制出选定的矩形框,并显示裁剪后的ROI图像。

OpenCV提供了丰富的图像处理和计算机视觉功能,可以应用于许多领域,包括图像识别、目标检测、人脸识别、视频分析等。腾讯云提供了云计算服务,其中包括图像处理服务、人工智能服务等,可以与OpenCV结合使用来实现更多的功能。

腾讯云图像处理服务:https://cloud.tencent.com/product/tci 腾讯云人工智能服务:https://cloud.tencent.com/product/ai

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python3使用cv2对图像进行基本操作

cv2的安装 如果是使用anaconda所搭建的python的编程环境,一般会事先安装好cv2这个仓库。...如果系统没有这个库,可以通过pip来进行安装和管理: 1 2 3 [dechin@dechin-manjaro cv2]$ python3 -m pip install opencv-python Requirement...) (1.20.1) 需要注意的是,这里虽然安装的时候是使用opencv-python这个名字,但是在python代码调用的时候是用的cv2这个名字: 1 2 3 4 5 6 7 8 [dechin@...平均池化 在上面所介绍的卷积核,我们使用的滑窗步长都是1,但是在实际场景,增大滑窗的步长不仅可以达到很好的效果,还可以很大程度上介绍需要处理的图像的大小。...总结概要 本文介绍了使用opencv-python对输入图像进行处理的基本操作,包括图像读取、图像变换等。

1.4K00

python3使用cv2对图像进行基本操作

cv2的安装 如果是使用anaconda所搭建的python的编程环境,一般会事先安装好cv2这个仓库。...如果系统没有这个库,可以通过pip来进行安装和管理: [dechin@dechin-manjaro cv2]$ python3 -m pip install opencv-python Requirement...) (1.20.1) 需要注意的是,这里虽然安装的时候是使用opencv-python这个名字,但是在python代码调用的时候是用的cv2这个名字: [dechin@dechin-manjaro cv2...平均池化 在上面所介绍的卷积核,我们使用的滑窗步长都是1,但是在实际场景,增大滑窗的步长不仅可以达到很好的效果,还可以很大程度上介绍需要处理的图像的大小。...总结概要 本文介绍了使用opencv-python对输入图像进行处理的基本操作,包括图像读取、图像变换等。

1.6K30
  • OpenCV 4基础篇| OpenCV图像的裁切

    Numpy 数组切片,当上界或下界为数组边界时可以省略,如:img[y:, :x] 表示高度方向 y 至图像底部(像素ymax),宽度方向图像左侧(像素 0)至 x。...(ROI) windowName:选择的区域被显示在的窗口的名字 img:要在什么图片上选择ROI showCrosshair:是否在矩形框里画十字线. fromCenter:是否是矩形框的中心开始画...在这种情况下,你可能需要寻找其他方法来选择图像ROI,例如使用固定坐标、图像分割算法等。...(BGR) roi = cv2.selectROI(img1, showCrosshair=True, fromCenter=False) xmin, ymin, w, h = roi # 矩形裁剪区域...总结 Numpy切片和Pillow.crop()都是非交互式的裁剪方法,适用于在代码中直接指定裁剪区域。 cv2.selectROI()是一个交互式的裁剪方法,允许用户通过图形界面选择ROI

    26600

    数据读取与数据扩增方法

    1. matplotlib matplotlib是Python的绘图库,与numpy一起使用可以算是一种matlab开源替代方案,在科学绘图领域被广泛使用。当然,用来读取图像自然不在话下。...pillow提供了常见的图像读取和处理的操作,它比opencv更为轻巧,且可以与ipython notebook无缝集成。 使用Image.open()读取图片储存为一个对象,并非是numpy矩阵。...= img[200:550,100:450,:] # ROI操作,坐标(高度范围,宽度范围,通道范围) cv2.imshow('roi',roi) # 图片源roiroi cv2.waitKey(...我们只需要对现有数据集进行微小改动,例如裁剪或灰度变换或翻转(数字6与9翻转会发生交换) 。无论如何,我们的神经网络会认为这些是不同的图像。...如果不使用任何数据扩增方法,深度学习模型会汽车车头的角度来进行判别,而不是汽车具体的区别。 2. 有哪些数据扩增方法?

    1.4K10

    图像篇】OpenCV图像处理(四)---图像切割&ROI选取

    1.2 代码实践 #coding:utf-8 import numpy as np import cv2 # 指定图像文件路径(此处使用相对地址) img_path = './04.jpg' # 读取图像...img = cv2.imread(img_path) image_width = img.shape[1] image_height = img.shape[0] # 裁剪图像,0,0代表图像左上角的坐标...1.3 效果展示 左上: 左下: 02 PART ROI截取 2.1 ROI简介 从上面的例子,我们可以看到,要截取图像的某一部分,我们必须首先要知道图像的起始点和宽度,高度信息...img) # 是否显示网格 showCrosshair = False # 如果为Ture的话 , 则鼠标的起始位置就作为了roi的中心 # False: 左上角到右下角选中区域 fromCenter..."image_roi.jpg", imCrop) cv2.waitKey(0) 代码解读: 该代码,主要注意的地方在于这个函数: cv2.selectROI("image", img, showCrosshair

    88410

    使用Python和YOLO检测车牌

    计算机视觉无处不在-面部识别,制造,农业到自动驾驶汽车。今天,我们将通过动手实践进入现代计算机视觉世界,学习如何使用YOLO算法检测车牌。...cd labelImg-master brew install qt brew install libxml2 make qt5py3 python labelImg.py 终端执行这些操作将打开此窗口...我们只有一个类(license-plate),但是坐标文件的类索引为15,我们只需查看图片5并自行验证即可。 我们将使用Python加载每个坐标文件,以通过将类索引更改为1来解决此问题。...= roi return 此类有两种方法: detect(img_path)–用于输入图像检测车牌并在其周围绘制一个矩形。...crop_plate()–用于图像裁剪检测到的车牌。如果您想应用一些OCR来提取文本,则此方法可用。

    1.1K20

    YOLOV3实现车牌检测

    推荐阅读31个Python实战项目教你掌握图像处理,PDF开放下载opencv_contrib扩展模块中文教程pdf,限时领取 计算机视觉无处不在-面部识别,制造,农业到自动驾驶汽车。...今天,我们将通过动手实践进入现代计算机视觉世界,学习如何使用YOLO算法检测车牌。 ?...我们只有一个类(license-plate),但是坐标文件的类索引为15,我们只需查看图片5并自行验证即可。 我们将使用Python加载每个坐标文件,以通过将类索引更改为1来解决此问题。...= self.img[y:y + h, x:x + w] self.roi_image = roi return 此类有两种方法: detect(img_path)–用于输入图像检测车牌并在其周围绘制一个矩形...crop_plate()–用于图像裁剪检测到的车牌。如果您想应用一些OCR来提取文本,则此方法可用。

    1.4K11

    这个操作可能不值钱,但却值得学习 | 【图片批量裁剪

    ,并读取名字 2、读取图片尺寸,公式定义裁剪区域 3、保存裁剪后的图片 注意点:裁剪后的图片的长和高必须为整数 代码 import os import cv2 # 准备工作:导入库和读取图片路径以及存储图片路径...(0.2 * x):round(0.8 * x), 0:y] # 3、将裁剪后的图片保存 cv2.imwrite(dst_path+'/'+img,crop_image) 结果展示...---- ---- 批量自定义裁剪区域的实现思路 1、找到存储图片的文件夹路径,并读取名字 2、读取图片尺寸,公式定义裁剪区域(需改为用鼠标选取区域) 3、保存裁剪后的图片 注意点:操作指南,在图片中顺时针或者逆时针点出四个点...# OpenCV需要先将多边形的顶点坐标变成顶点数×1×2维的矩阵,再来绘制 # --------------画多边形--------------------- mask = cv2...[0]] # 裁剪坐标为[y0:y1, x0:x1] cv2.imwrite(dst_path + img1, ROI_crop) cv2.imshow(img1, ROI) '

    76820

    无人机红外相机的畸变矫正

    在项目开展过程,发现疆M30T的红外相机存在比较明显的畸变问题,因此需要对红外图像进行畸变矫正。...相机坐标系到图像坐标系 这一步需要将三维坐标系的一点投射到二维平面,用透视投影的公式表示如下: 图像坐标系到像素坐标系 这一步只需缩放平移,可用仿射变换的公式表示如下: 整体变换公式 世界坐标系到相机坐标系所需参数被称为外参...得到的ROI对结果进行裁剪。...dst = cv2.undistort(img, mtx, dist, None, newcameramtx) # 根据前面ROI区域裁剪图片 # x, y, w, h = roi dst = dst...__ == '__main__': # 读取图像 img_name = 'hw_img.jpg' img = cv2.imread(img_name) # 显示图像并设置鼠标事件回调函数

    90840

    USTC-NP2016课程学习总结

    view.py #在浏览器打开http://localhost:8080,上传图像 部署到web服务器 关于如何部署到自己的服务器上(Flask + WSGI + Nginx),可以参考这篇文章 【3...morphologyEx(closed, cv2.MORPH_OPEN, kernel) 线段检测 为了对图片各个数值所在的区域进行定位,需要检测出图片中比较明显的标识,3条黑线,然后利用这三条线对整张图片进行标定...通过这次课程几位大神的实践,揭开了图像处理的神秘面纱,图像的数据结构到存储方式,还有常见的处理方式,我体会到了图像处理是一件很有趣、要发挥想象力的事情,以后这方面我还会继续探索。 5....2、图像拍照上传以及手动裁剪   考虑到用户上传的照片可能不规整,为了提高后台对图像的识别度,我使用H5、Bootstrap、Jquery和Angular设计了一个图片上传预览、旋转、手动裁剪的功能,后来尝试了使用...课程有难度,难度还不小,压力也比较大,这是因为这学期所学的机器学习对我而言是一门完全陌生的学科,从前期的图像处理技术,小到git的多人协作,使用python语言来实践机器学习的各种理论算法,各种处理库的学习

    86130

    Py之cv2:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略

    安装OpenCV的的两种方法 T1、使用whl文件法 T2、直接命令法 T3、Anaconda 环境下安装 OpenCV常见函数、方法 0、基本库函数 1、图像基本运算 2、Image.open...和cv2.imread 的区别及其转换 ---- 相关文章: Py之cv2:cv2库(OpenCV)的简介、安装、使用方法(常见函数、方法等)最强详细攻略 CV:计算机视觉技术之图像基础知识(一)—以python...) CV:利用pythoncv2库实现图像数据增强—随机裁剪、随机旋转、随机hsv变换、随机gamma变换代码实现 关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库...基本的GUI:图像与视频显示、键盘和鼠标事件处理、滚动条。 图像标注:线、二次曲线、多边形、画文字。...image.show() cv2.waitKey() 相关应用:CV:利用pythoncv2库实现图像数据增强—随机裁剪、随机旋转、随机hsv变换、随机gamma变换代码实现 参考文章 OpenCV之

    8.4K21

    如何Python 3安装pandas包和使用数据结构

    在本教程,我们将首先安装pandas,然后让您了解基础数据结构:Series和DataFrames。 安装 pandas 同其它Python包,我们可以使用pip安装pandas。...让我们在命令行启动Python解释器,如下所示: python 在解释器,将numpy和pandas包导入您的命名空间: import numpy as np import pandas as pd...没有声明索引 我们将输入整数数据,然后为Series提供name参数,但我们将避免使用index参数来查看pandas如何隐式填充它: s = pd.Series([0, 1, 4, 9, 16, 25...您会注意到在适当的时候使用浮动。 此时,您可以对数据进行排序,进行统计分析以及处理DataFrame的缺失值。 结论 本教程介绍了使用pandasPython 3 进行数据分析的介绍性信息。...---- 参考文献:《How To Install the pandas Package and Work with Data Structures in Python 3

    18.6K00

    Python图片裁剪的两种方式——Pillow和OpenCV

    在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV。两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧。.../data/cut/cv_cut_thor.jpg", cropped) #上面是正向,即从左上角开始截图,下面的是右下角开始反向截图 import cv2 img = cv2.imread("...Pillow对图片进行裁剪 接下来,我们看一下使用Pillow如何对图片进行裁剪,代码如下所示: from PIL import Image img = Image.open("....首先我们使用open方法读取图片,然后查看它的size(这里的size和OpenCV的shape是类似的),size的输出是(1920, 1080),也就是图片的宽度和高度。...另外使用PIL crop截取图像这里容易报错: AttributeError: '_idat' object has no attribute 'fileno' During handling of the

    4.6K20

    Python OpenCV 3.x 示例:1~5

    安装 OpenCV-Python 在本节,我们说明如何在多个平台上使用 Python 2.7 安装 OpenCV3.X。...在下一章,我们将讨论如何对给定图像进行卡通化。 三、卡通化图像 在本章,我们将学习如何图像转换为卡通图像。 我们将学习如何在实时视频流访问网络摄像头并进行键盘/鼠标输入。...扩展捕获选项 在前面讨论的代码cv2.VideoCapture(0)使用自动检测到的读取器实现定义了默认连接的网络摄像头的使用,但是有多个选项涉及如何网络摄像头读取图像。...鼠标输入 在本节,我们将看到如何使用鼠标与显示窗口进行交互。 让我们从简单的事情开始。 我们将编写一个程序,该程序将检测检测到鼠标单击的象限。...在下一章,我们将讨论特征检测以及如何将其用于理解图像内容。 五、图像中提取特征 在本章,我们将学习如何检测图像的显着点,也称为关键点。

    2.5K10
    领券