当前位置: 首页 > news >正文

【python】OpenCV—Rectangle, Circle, Selective Search(1.2)

在这里插入图片描述

文章目录

  • 1 画框画圈
    • 1.1 画矩形框
    • 1.2 画圆 / 点
    • 1.3 椭圆
  • 2 Selective Search
  • 3 Resize

1 画框画圈

1.1 画矩形框

# Copy the image
img_rgb_copy = img_rgb.copy()# Draw a rectangle
cv2.rectangle(img_rgb_copy, pt1 = (405, 90), pt2 =(740, 510),color = (255, 0, 0), thickness = 5)
plt.axis("off")
plt.imshow(img_rgb_copy)

pt1 是左上角坐标,pt2 是右下角坐标,坐标可以用电脑自带的画图工具获取,直接 copy 过来就行!

在这里插入图片描述


补充1:如果要画成 mask 块,也即全填充的形式,则把 thickness 参数设置为 -1 即可

补充2:如果要把区域裁剪出来,可以借助 numpy 的切片操作,例如

import cv2img_pth = "/file2/yanmeng/human/ocean3_115/images/ocean_17_55034.jpg"
img = cv2.imread(img_pth)box = (606, 182, 682, 360)  # (x0, y0, x1, y1)crop_img = img[box[1]:box[3], box[0]:box[2]]  # [y0:y1, x0:x1]cv2.imshow("1", img)
cv2.imshow("2", crop_img)
cv2.waitKey(10000)
cv2.destroyAllWindows() # 释放所有由 Opencv 创建的窗口

waitKey() 的参数为等待键盘触发的时间,单位为 ms,返回值为 -1(表示没有键被按下)或者 ASCII 码

在这里插入图片描述
在这里插入图片描述

复制 RoI 区域

import cv2
img = cv2.imread("1.jpg")
bag = img[840:1004, 830:1032]
img[840:1004, 830+200:1032+200] = bag
cv2.imwrite("2.jpg", img)

请添加图片描述
快乐加倍!!!

1.2 画圆 / 点

void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color,int thickness=1, int line_type=8, int shift=0 );
  • img:图像。
  • center:圆心坐标。
  • radius:圆形的半径。
  • color:线条的颜色。
    t- hickness:如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充。
  • line_type:线条的类型。见 cvLine 的描述
  • shift:圆心坐标点和半径值的小数点位数。
img_rgb_copy = img_rgb.copy()
# Draw a circle
cv2.circle(img_rgb_copy, center = (200, 280), radius =80,color = (0,0,255), thickness = 5)
plt.axis("off")
plt.imshow(img_rgb_copy)

在这里插入图片描述
一起画,哈哈哈,我也是周伯通了,左手画圆,右手画框!
在这里插入图片描述

1.3 椭圆

绘制椭圆
在这里插入图片描述

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = np.zeros((512,512,3),np.uint8)#生成一个空彩色图像
cv2.ellipse(img=img,center=(256,256),axes=(150,100),angle=30,startAngle=45,endAngle=180,color=(0,0,255),thickness=-1)
#注意最后一个参数-1,表示对图像进行填充,默认是不填充的,如果去掉,只有椭圆轮廓了
cv2.imshow("1", img)
cv2.waitKey(0)

在这里插入图片描述

2 Selective Search

RCNN 和 Fast RCNN 都用的是 SS,目前被主流的 Faster RCNN 的 Region Proposal Network 替代!我们重温下经典!

我用的 jupyter notebook,所以要克服下 opencv 的 cv2.imshow() 问题,参考
opencv如何在jupyter notebook中显示图片

import cv2
import matplotlib.pyplot as plt
if __name__ == '__main__':cv2.setUseOptimized(True);cv2.setNumThreads(4);# read imageim = cv2.imread('/root/userfolder/Experiment/1.png')# resize imagenewHeight = 200newWidth = int(im.shape[1] * 200 / im.shape[0])im = cv2.resize(im, (newWidth, newHeight))#cv2.imshow("input", im)  # jupyter notebook #img = im[:,:,::-1] # 必须为 ::-1#plt.imshow(im)# 创建算法+设置输入图像ss = cv2.ximgproc.segmentation.createSelectiveSearchSegmentation()ss.setBaseImage(im)# 使用SS快速版本ss.switchToSelectiveSearchFast()# 执行SSrects = ss.process()print('Total Number of Region Proposals: {}'.format(len(rects)))# 推荐100个ROInumShowRects = 100imOut = im.copy()# 显示前100个区域外接矩形框for i, rect in enumerate(rects):if i < numShowRects:x, y, w, h = rectcv2.rectangle(imOut, (x, y), (x + w, y + h), (0, 255, 0), 1, cv2.LINE_AA)else:break# show output"""cv2.imshow("SS-Demo", imOut)cv2.waitKey(0)cv2.destroyAllWindows()"""# jupyter notebookimg = imOut[:,:,::-1] # 必须为 ::-1plt.xticks(())plt.yticks(())plt.imshow(img)

处理前
在这里插入图片描述
处理后
在这里插入图片描述

3 Resize

cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
  • InputArray src:输入图片
  • OutputArray dst :输出图片
  • Size:输出图片尺寸——(w,h)
  • fx, fy:沿 x 轴,y 轴的缩放系数
  • interpolation:插入方式

在这里插入图片描述
来自 opencv: 图像缩放(cv2.resize)

相关文章:

【python】OpenCV—Rectangle, Circle, Selective Search(1.2)

文章目录 1 画框画圈1.1 画矩形框1.2 画圆 / 点1.3 椭圆 2 Selective Search3 Resize 1 画框画圈 1.1 画矩形框 # Copy the image img_rgb_copy img_rgb.copy()# Draw a rectangle cv2.rectangle(img_rgb_copy, pt1 (405, 90), pt2 (740, 510),color (255, 0, 0), thickne…...

MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:

show dbs&#xff1a;列出所有数据库use db_name&#xff1a;切换到指定的数据库db.dropDatabase()&#xff1a;删除当前数据库db.createCollection("collection_name")&#xff1a;创建集合db.collection_name.insert(document)&#xff1a;向指定集合插入数据db.co…...

网络运维Day19

文章目录 环境准备数据备份为什么要备份什么是备份备份到哪里什么时候备份如何备份 完整备份物理备份逻辑备份测试恢复所有库 构建MySQL服务xtrabackup完全备份与恢复完全备份完全恢复增量备份增量恢复 总结 环境准备 IP地址采用自动分配&#xff0c;以自己的为准 可以将之前的…...

颜色标记txt和多根走线【Cadance进阶】

文章目录 前言颜色标记txt多根走线 前言 今天来介绍个基础操作中不常见的&#xff0c;但是非常实用的技巧。第一个是颜色标记&#xff0c;它是与text文件结合&#xff0c;根据text文件中的网络来染色标记的&#xff0c;致力于找出那些特定的走线&#xff0c;或者是查询出现问题…...

你是想被ChatGPT改变,还是改变软件开发的未来?丨IDCF

人工智能技术的发展&#xff0c;正在深刻地改变着我们的生活和工作方式。在软件工程领域&#xff0c;ChatGPT作为一种新兴的人工智能技术&#xff0c;正在逐渐地被应用到软件开发的各个环节中。那么&#xff0c;ChatGPT对每个人的影响是什么呢&#xff1f; 一、对软件开发人员…...

Homography详解在MVSNet中的应用

Homography&#xff08;单应性变换&#xff09;是计算机视觉中的一个重要概念&#xff0c;用于描述两个平面之间的透视关系。在图像处理和计算机视觉中&#xff0c;Homography通常表示两个平面之间的投影关系&#xff0c;这种关系可以通过一个3x3的矩阵来表示。 在数学上&…...

linux parted给磁盘分区

概述 通常我们用的比较多的分区工具是fdisk命令&#xff0c;但由于fdisk只支持MBR分区&#xff0c;MBR分区表最大支撑2T的磁盘&#xff0c;所以无法划分大于2T的分区。而parted工具可以划分单个分区大于2T的GPT格式的分区&#xff0c;也可以划分普通的MBR分区。 1.查看磁盘大小…...

大数据毕业设计选题推荐-机房信息大数据平台-Hadoop-Spark-Hive

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

使用 PYTORCH 进行图像风格迁移

一、介绍 本教程介绍如何实现 由 Leon A. Gatys、Alexander S. Ecker 和 Matthias Bethge 开发的神经风格算法。神经风格或神经传输允许您拍摄图像并以新的艺术风格再现它。该算法采用三幅图像&#xff0c;即输入图像、内容图像和风格图像&#xff0c;并将输入更改为类似于内容…...

vscode使用flake8设置单行最长字符限制设置失败的问题

vscode使用flake8设置单行最长字符限制设置失败的问题 问题描述解决方案 问题描述 如图所示&#xff0c;使用flake8单行字数过长&#xff0c;就会有有红色底的波浪线 一般情况下很多教程都会让你在setting.json里面设置 但是我打开我的setting.json&#xff0c;发现我已经进…...

SAP KO22内部订单预算BAPI与BDC

KO22可以为内部订单预先维护预算&#xff0c;以便在后续成本实际产生时进行控制。 使用BAPI进行创建&#xff1a;KBPP_EXTERN_UPDATE_CO SAP note 625613中对该BAPI的使用方式有详细介绍&#xff0c;使用时可进行参考。 年度预算&#xff1a;e_gjahr传值、e_ges置空&#xff…...

K8S篇之实现利用Prometheus监控pod的实时数据指标

一、监控部署 1、将k8s集群中kube-state-metrics指标进行收集&#xff0c;服务进行部署 1.1 pod性能指标&#xff08;k8s集群组件自动集成&#xff09; k8s组件本身提供组件自身运行的监控指标以及容器相关的监控指标。通过cAdvisor 是一个开源的分析容器资源使用率和性能特性的…...

智能巡检软件怎么选?企业设备管理需要做什么?

在当今竞争激烈的企业运营环境中&#xff0c;巡检管理的重要性不言而喻。然而&#xff0c;许多企业在执行巡检任务时面临着诸多挑战&#xff0c;如员工执行不到位、缺乏有效的人员监管、漏检误检、安全隐患以及数据整理困难等问题。这些问题如果不能得到妥善解决&#xff0c;不…...

【python】Django——连接mysql数据库

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django——连接mysql数据库 连接MySQL数据库…...

北京君正客户应用案例:掌静脉3D人脸猫眼视屏智能锁

凯迪仕在今年4月发布了智能锁旗舰新品K70 Pro Max掌静脉3D人脸猫眼视屏智能锁&#xff0c;随即这款新品也成了行业热议的焦点。凯迪仕每次新品都力求突破精益求精&#xff0c;不仅追求科技感、高级感与品质感&#xff0c;而且赋予科技温度&#xff0c;带来人文化的关怀。K70 Pr…...

人工智能+游戏 会带来什么

“人工智能游戏” 写在前面 随着人类生活水平的日益提高&#xff0c;游戏正在为越来越多的人们带去欢乐。同时&#xff0c;作为21世纪新兴科学技术的人工智能&#xff0c;也正在研究人员的努力下不断向前突破。那么&#xff0c;这两列高速前进的“火车”能否接轨并行呢&#…...

人工智能基础_机器学习030_ElasticNet弹性网络_弹性回归的使用---人工智能工作笔记0070

然后我们再来看elastic-net弹性网络,之所以叫弹性是因为,他融合了L1和L2正则,可以看到 他的公式 公式中有L1正则和L2正则两个都在这个公式中 可以看到弹性网络,在很多特征互相联系的时候,非常有用,比如, 相关性,如果数学好,那么物理也好,如果语文好,那么英语也好 这种联系 正…...

Python算法——平衡二叉树(AVL)

Python中的平衡二叉搜索树&#xff08;AVL树&#xff09;算法详解 平衡二叉搜索树&#xff08;AVL树&#xff09;是一种自平衡的二叉搜索树&#xff0c;它通过在插入或删除节点时进行旋转操作来保持树的平衡性。在AVL树中&#xff0c;任何节点的两个子树的高度差&#xff08;平…...

公开可用的API 合集

这是一个开源项目列表&#xff0c;收录了一些公开可用、无需注册或认证即可使用的API接口。 这个项目解决了开发者们在寻找合适的API时遇到的各种困难&#xff0c;如无法快速定位、难以筛选等问题&#xff0c;为他们提供了便捷的一站式查询服务。 项目是“public-apis”&…...

单片机编程原则

多任务编程的概念 方式一&#xff1a;实时操作系统&#xff08;不建议新手使用&#xff09; 方式二 &#xff1a;裸机多任务模型 逻辑多任务的基本原理 把三个任务分别分为一个一个的片段 然后先执行任务一的第一个切片 执行第二个任务的第一个片段 执行第三个任务的第一个片…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...