opencv rectangle函数(python连接opencv库)

因为做程序图像剪切一直不太明白是怎么切片的,这里就用cv2.rectangle这个函数来看一下opencv是怎么计量图像的坐标轴的。opencv官网上给出的cv2.rectangle函数定义如下:Python:cv2.rectangle(img,pt1,pt2,color[,thickness[,lineType[,shift]]])→Noneimg–…

大家好,又见面了,我是你们的朋友全栈君。

因为做程序图像剪切一直不太明白是怎么切片的,这里就用 cv2.rectangle 这个函数来看一下 opencv 是怎么计量图像的坐标轴的。

cv2.rectangle 这个函数的作用是在图像上绘制一个简单的矩形。

opencv 官网上给出的 cv2.rectangle 函数定义 如下:

Python: cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) → None

  • img – Image.
  • pt1 – Vertex of the rectangle.
  • pt2 – Vertex of the rectangle opposite to pt1 .
  • color – Rectangle color or brightness (grayscale image).
  • thickness – Thickness of lines that make up the rectangle. Negative values, like CV_FILLED , mean that the function has to draw a filled rectangle.
  • lineType – Type of the line. See the line() description.
    • 8 (or omitted) – 8-connected line.
    • 4 – 4-connected line.
    • CV_AA – antialiased line.
  • shift – Number of fractional bits in the point coordinates.

这感觉说的不详细,不知道是不是我找的有问题。

图片

我们比较关系的是 pt1 和 pt2 这两个参数是什么含义。下面我就用一个程序为大家说明,我们程序用的图如下
图来自 https://blog.csdn.net/lonelyrains/article/details/50388999
在这里插入图片描述

pt1 和 pt2 参数

我们可以看到这个图十分的规整,你把它下下来后就可以发现它是 1200×750 的。因此每一个人物的大小就是 240×375,我们就利用这个规整性来探究一下那两个参数是什么意思。

import cv2
img = cv2.imread(r"C:\Users\Administrator\Desktop\20151223182909577.png")
print(img.shape)  # 图片大小
cv2.rectangle(img, (240, 0), (480, 375), (0, 255, 0), 2)
cv2.imshow("fff", img)

输出 (750, 1200, 3) 3 是指 3 通道,表示这个图片宽度是 1200 像素,高度是 750像素。

参考 Accessing Image Properties
在这里插入图片描述
然后根据 stackoverflow 的图示 https://stackoverflow.com/questions/23720875/how-to-draw-a-rectangle-around-a-region-of-interest-in-python

import cv2
cv2.rectangle(img, (x1, y1), (x2, y2), (255,0,0), 2)

x1,y1 ------
|          |
|          |
|          |
--------x2,y2

我们就可以很容易的得出结论 cv2.rectangle 的 pt1 和 pt2 参数分别代表矩形的左上角和右下角两个点,而且 x 坐标轴是水平方向的,y 坐标轴是垂直方向的。

− − − − − − − − − − − − − − > x ————–>x >x
∣ |
∣    x 1 , y 1 − − − − − − |\space \space x_1,y_1 ——   x1,y1
∣    ∣                                   ∣ |\space \space |\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space |                                    
∣    ∣                                   ∣ |\space \space |\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space |                                    
∣    ∣                                   ∣ |\space \space |\space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space |                                    
∣    ∣ − − − − − − − − x 2 , y 2 |\space \space | ——–x_2,y_2   x2,y2
∣ |
∨ \vee
y y y

color 参数

color 参数一般用 RGB 值指定,表示矩形边框的颜色。RGB 对应的颜色可以使用 https://www.sioe.cn/yingyong/yanse-rgb-16/ 查看。

import cv2
img = cv2.imread(r"C:\Users\Administrator\Desktop\20151223182909577.png")
print(img.shape)
cv2.rectangle(img, (240, 0), (480, 375), (0, 0, 255), 2)
cv2.imshow("fff", img)

在这里插入图片描述
需要注意的是这里的 (0, 0, 255) 三个分别对应 B G R。(不太懂为什么)

thickness 参数

thickness 参数表示矩形边框的厚度,如果为负值,如 CV_FILLED,则表示填充整个矩形。

import cv2
img = cv2.imread(r"C:\Users\Administrator\Desktop\20151223182909577.png")
print(img.shape)
cv2.rectangle(img, (240, 0), (480, 375), (0, 255, 0), -1)
cv2.imshow("fff", img)

在这里插入图片描述

import cv2
img = cv2.imread(r"C:\Users\Administrator\Desktop\20151223182909577.png")
print(img.shape)
cv2.rectangle(img, (240, 0), (480, 375), (0, 255, 0), 10)
cv2.imshow("fff", img)

在这里插入图片描述

lineType 参数

line() function 中有这样一段说明:

The function line draws the line segment between pt1 and pt2 points in the image. The line is clipped by the image boundaries. For non-antialiased lines with integer coordinates, the 8-connected or 4-connected Bresenham algorithm is used. Thick lines are drawn with rounding endings. Antialiased lines are drawn using Gaussian filtering. To specify the line color, you may use the macro CV_RGB(r, g, b)

这个参数看上去是指定 Bresenham 算法是 4 连通的还是 8 连通的,涉及到了计算机图形学的知识。如果指定为 CV_AA,则是使用高斯滤波器画反锯齿线。

shift 参数

shift 参数表示点坐标中的小数位数,但是我感觉这个参数是在将坐标右移 shift 位一样。shift 为 1 就相当于坐标全部除以 2 1 2^1 21,shift 为 2 就相当于坐标全部除以 2 2 2^2 22

import cv2
img = cv2.imread(r"C:\Users\Administrator\Desktop\20151223182909577.png")
print(img.shape)
cv2.rectangle(img, (240*2*2, 0), (480*2*2, 375*2*2), (0, 255, 0), 2, shift=2)
cv2.imshow("fff", img)

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129572.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 浅析Python优势所在

    浅析Python优势所在浅析Python优势所在 Python优势的最大有点就是比其他语言更简单易学,功能强大的解释型编程语言,它有简洁明了的语法,高效率的高层数据结构,能够简单而有效地实现面向对象编程,欢迎大家学习参考。如果你仅仅认为用Python优势只能写写“HelloWorld”,那你就大错特错了。Python可以被应用到网络开发、GUI开发、图形开发、Web开发、游戏开发、手机

    2022年10月4日
    0
  • c语言学生成绩管理系统(c语言链表实现学生管理系统)

    本代码供读者学习使用,请不要随意转载。一、设计题目:学生成绩管理系统二、目的与要求每位学生记录包含有学号、姓名、性别、出生日期、三门功课的成绩(高等数学、大学英语、C语言)、总分和平均分系统菜单:(1)录入学生记录(2)添加学生记录(3)删除学生记录(4)修改学生记录(要求输入密码)(5)查找学生记录(按学号、按姓名)(6)按总分对记录进行降序排列…

    2022年4月9日
    150
  • 京东猪脸识别比赛数据预处理:用Python将视频每一帧提取存储为图片

    京东猪脸识别比赛数据预处理:用Python将视频每一帧提取存储为图片最近参加京东的猪脸识别比赛,训练集是30个视频,需要将视频的每一帧提取出来存储为图片,存入对应的文件夹(分类标签)。本例是直接调用了cv2模块中的VideoCapture。但有个问题,每一个视频转换得到的30个子文件夹里,都有2952张图片,但第2952张是空的,所以只有运用强大的Linux递归删除符合条件的文件了

    2022年6月21日
    22
  • sdfsdfsdsdfsdf

    sdfsdfsdsdfsdf3444444grggerggdfgdgd你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带…

    2022年10月4日
    0
  • python whl文件安装_python whl文件怎么安装

    python whl文件安装_python whl文件怎么安装1、了解自己的Python版本的,方便后续下载合适的.whl文件。win+R进入命令运行窗口,输入cmd打开命令提示符,接着输入python即可这是我的版本3.7.1,win322、选择需要的.whl文件下载https://www.lfd.uci.edu/~gohlke/pythonlibs/我的是64位所以选择的是mysqlclient‑1.4.2‑cp37‑cp37m‑win_amd64.wh…

    2022年5月30日
    37
  • 金税盘、税控盘、税务UKey快速批量抄税清卡的一种方法分享

    金税盘、税控盘、税务UKey快速批量抄税清卡的一种方法分享本文介绍了金税盘,税控盘,税务UKey抄税和清卡的流程,及常见的一键批量抄税,一键批量清卡的技术手段。分享使用组件进行批量抄税和清卡的核心代码。组件接口同时支持发票开具,作废,红冲等功能。

    2022年6月5日
    107

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号