使用OpenCV对旋转矩形区域的内容进行裁剪

这篇具有很好参考价值的文章主要介绍了使用OpenCV对旋转矩形区域的内容进行裁剪。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

知道旋转矩形四个顶点的坐标,如何用opencv实现旋转矩形的裁剪

opencv截取旋转矩形,工作总结,opencv,计算机视觉,人工智能
再做OCR的时候,我想单独把矩形的区域裁剪出来,因此对这个问题进行了一些探索,最后得到的具体步骤如下:

  • 使用cv2.minAreaRect()函数获取旋转矩形的中心点、宽度、高度和旋转角度信息。
  • 使用cv2.getRotationMatrix2D()函数获取旋转矩阵。
  • 使用cv2.warpAffine()函数根据旋转矩阵进行旋转。
  • 使用cv2.getRectSubPix()函数将旋转矩形区域裁剪出来
def crop(image,pos,show=False):
    points = np.array(pos,dtype="int32")
    # 获取旋转矩形的中心点、宽度、高度和旋转角度信息
    rect = cv2.minAreaRect(points)
    center, size, angle = rect
    print(angle)
    print(image.shape)
    # 获取旋转矩阵
    rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1)

    # 根据旋转矩阵进行旋转
    rotated_image = cv2.warpAffine(image, rotation_matrix, (image.shape[1],image.shape[0]))

    # 将旋转矩形区域裁剪出来
    cropped_image = cv2.getRectSubPix(rotated_image, tuple(map(lambda x:int(x),size)), tuple(map(lambda x:int(x),center)))
    
    
    if show:
        plt.figure(dpi=100)
        plt.subplot(1,3,1)
        plt.imshow(image)
        plt.axis('off')
        
        plt.subplot(1,3,2)
        plt.imshow(rotated_image)
        plt.axis('off')
        
        plt.subplot(1,3,3)
        plt.imshow(cropped_image)
        plt.axis('off')
        
        plt.show()
    return cropped_image
    
crop(img,result[12][0],show=True)
#[[332.0, 75.0], [432.0, 95.0], [422.0, 146.0], [322.0, 127.0]]

输出结果如下:
opencv截取旋转矩形,工作总结,opencv,计算机视觉,人工智能
达到了我们的目的文章来源地址https://www.toymoban.com/news/detail-558148.html

到了这里,关于使用OpenCV对旋转矩形区域的内容进行裁剪的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • c++opencv RotatedRect 旋转矩形角度转换和顶点顺序转换
  • OPENCV C++(七)霍夫线检测+找出轮廓和外接矩形+改进旋转

    霍夫线检测  定义存放输出线的向量 此向量输出有距离,角度 因为检测的原理就是在变换霍夫空间里面去检测的,这里可以理解为极坐标 第3个参数是距离精度 第四个参数是角度精度,第五个是阈值,只有点超过90个才算一条线 在图中画线操作: 这里是画线操作  概率霍夫

    2024年02月13日
    浏览(37)
  • 【opencv】示例-ffilldemo 使用floodFill()函数进行区域泛洪填充
  • Python opencv进行矩形识别

    Python opencv进行矩形识别

    图像识别中,圆形和矩形识别是最常用的两种,上一篇讲解了圆形识别,本例讲解矩形识别,最后的结果是可以识别出圆心,4个顶点,如下图: 左边是原始图像,右边是识别结果,在我i5 10400的CPU上,执行时间不到8ms。 识别出结果后,计算任意3个顶点的彼此距离,共3个数据

    2024年02月07日
    浏览(6)
  • python opencv:批量识别拼接图片分界线并进行自动裁剪

    python opencv:批量识别拼接图片分界线并进行自动裁剪

    在网上找图片素材时,有很多的图片是长图片,在一张图片上拼接了许多张图片,而很多时候我们需要单张图片,此时就需要将长图进行裁剪,一般可以用图片工具进行简单裁剪,高级点可以采用ps进行切片处理,如果图片数量少还好说一旦有大量的图片需要裁剪就很繁琐并

    2024年02月11日
    浏览(16)
  • opencv(12):cv::rectangle学习与代码演示,使用opencv画矩形/矩形框

    opencv(12):cv::rectangle学习与代码演示,使用opencv画矩形/矩形框

    1.1 功能:         绘制一个简单的、粗的或填充的直角矩形或直角矩形框。 1.2 c++代码形式 rectangle() [1/2] img     图像。 pt1      矩形的顶点。 pt2      与 pt1 相对的矩形的顶点。意思是pt1和pt2是对角顶点 color   颜色或亮度(灰度图像)。 thickness     构成矩形的线

    2024年02月03日
    浏览(5)
  • OpenCV实现图像中相邻区域的连接并进行合并

    OpenCV实现图像中相邻区域的连接并进行合并

    问题描述: 在进行图像分割时,由于分割效果不够理想,使得两相邻区域间存在未分割的情况。如果使用合并boundingBox的方式来处理,势必又会引入更多无关的区域,从而增加了分割的难度。因此本文考虑对两区域进行连接并寻找连接后的凸包,从而实现相邻区域合并,以便

    2024年02月12日
    浏览(46)
  • OpenCV库进行图像旋转、仿射变换和透视变换
  • OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)

    OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)

    裁剪是为了从图像中删除所有不需要的物体或区域。甚至突出显示图像的特定功能。 使用OpenCV裁剪没有特定的功能,NumPy数组切片是工作。读取的每个图像都存储在2D数组中(对于每个颜色通道)。只需指定要裁剪区域的高度和宽度(以像素为单位),就可以完成 以下代码片

    2024年02月08日
    浏览(5)
  • OpenCV图像识别:使用矩形框框选目标

    OpenCV图像识别:使用矩形框框选目标 OpenCV是一款广泛应用于计算机视觉领域的开源计算机视觉库。在图像识别任务中,矩形框是一种常见的工具,可以用来框选出感兴趣区域。本文将介绍如何使用OpenCV选择矩形框。 首先,需要导入OpenCV库和Numpy库,以及读取图像: 然后,可

    2024年02月11日
    浏览(5)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包