OPenCv基础代码

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt#读取图像cv.imread()#读取图像cv.imshow()#绘制直线 cv.line(img,start,end,color,thickness)#绘制圆形 cv.circle(img,centerpoint, r, color, thickness)#绘制矩形 cv.rectangle(img,leftupper,rightdown,color,thickness)#向图像中添加文字 cv.putText(img,text,station, font, fontsize,color,thickness,cv.LINE_AA)# 1 创建一个空白的图像
# img = np.zeros((512,512,3), np.uint8)
# # 2 绘制图形
# cv.line(img,(0,0),(511,511),(255,0,0),5)
# cv.rectangle(img,(384,0),(510,128),(0,255,0),3)
# cv.circle(img,(447,63), 63, (0,0,255), -1)
# font = cv.FONT_HERSHEY_SIMPLEX
# cv.putText(img,'赵慕溪',(10,500), font, 4,(255,255,255),2,cv.LINE_AA)
# # 3 图像展示
# plt.imshow(img[:,:,::-1])
# plt.title('匹配结果'), plt.xticks([]), plt.yticks([])
# plt.show()# 1 读取图像
# img1 = cv.imread("view.jpg")
# img2 = cv.imread("rain.jpg")# # 2 加法操作
# img3 = cv.add(img1, img2)  # cv中的加法
# img4 = img1 + img2  # 直接相加
#
# # 3 图像显示
# fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
# axes[0].imshow(img3[:, :, ::-1])
# axes[0].set_title("cv中的加法")
# axes[1].imshow(img4[:, :, ::-1])
# axes[1].set_title("直接相加")
# plt.show()# 2 图像混合
# img3 = cv.addWeighted(img1, 0.5, img2, 0.5, 0)
#
# # 3 图像显示
# plt.figure(figsize=(8, 8))
# plt.imshow(img3[:, :, ::-1])
# plt.show()# img = cv.imread("sheep3.png")
# #水平方向堆叠5张
# imgHor = np.hstack((img, img, img, img, img, img, img, img, img, img, img, img, img))
# # 垂直方向堆叠3张
# imgVer = np.vstack((img, img, img, img, img, img, img, img))
#
# cv.imshow("Horizontal", imgHor)
# cv.imshow("Vertical", imgVer)
# cv.waitKey(0)# # # 原始图像
# img = cv.imread(".#1113.jpg")
# # # HSV图像, 把BGR通道转变成HSV
# imgHSV = cv.cvtColor(img, cv.COLOR_BGR2HSV)
#
# cv.imshow("Original", img)
# cv.imshow("HSV", imgHSV)
# cv.waitKey(0)## 图片尺寸减小函数(计算机屏幕看着太大,所以减小,你可以不减小)def getContours(img):# findContours()接收的是二值黑白图, 所以整个代码最下面调用getContours函数时传入的图片是imgCanny, imgCanny是二值黑白图(忘记的点击目录看第6个)# 返回两个:轮廓本身,轮廓属性# 参数:寻找轮廓的图像,检索外轮廓(轮廓检索模式),存储所有的轮廓点(轮廓的近似办法)contours, hierarchy = cv.findContours(img, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE)for cnt in contours:# 计算轮廓面积area = cv.contourArea(cnt)# 画出轮廓面积大于2000的轮廓(筛选一下)if area > 2000:# 参数:待画轮廓图像,待画轮廓,轮廓索引(-1#表示都画),轮廓颜色, 轮廓线条粗细cv.drawContours(imgContour, cnt, -1, (255, 0, 0), 3)# 计算轮廓的周长peri = cv.arcLength(cnt, closed=True)# 判断点到相对应的line segment 的距离的阈值。# 距离大于此阈值则舍弃,小于此阈值则保留,epsilon越小,折线的形状越“接近”曲线。approx = cv.approxPolyDP(cnt, 0.02 * peri, closed=True)# 每个图形,角的个数objCor = len(approx)# 获得每个图形角外套的框的左上角坐标,以及w,hx, y, w, h = cv.boundingRect(approx)# 如果顶角数为3,判定为三角形if objCor == 3:objectType = "Tri"# 如果顶角数为4elif objCor == 4:aspRatio = w / h# 如果0#.95 < 宽高比 < 1.05,就是正方形(因为实际图片长宽不一定完全相等)if aspRatio > 0.95 and aspRatio < 1.05:objectType = "Square"# 不在这个范围,基本判定为长方形else:objectType = "Rectangle"# 如果大于4, 就是圆形elif objCor > 4:objectType = "Circle"# 如果有其它情况,标注为Noneelse:objectType = "None"# 画框,参数:待画框的图,框左上角,右下角的坐标,框的颜色,框的粗细cv.rectangle(imgContour, (x, y), (x + w, y + h), (0, 255, 0), 2)# 添加文字,参数:待画框的图,文本信息,文本左下角的坐标(w, h),字体,字体大小,字体颜色,字体粗细cv.putText(imgContour, objectType, int((x + (w / 2) - 10), int(y + (h / 2) - 10)), cv.FONT_HERSHEY_COMPLEX, 0.8,(0, 0, 0), 2)img = cv.imread("shapes3.png")
# 拷贝一份彩图,轮廓,检测框,文字都要添加再这张图上
imgCanny = cv.Canny(img, 200, 250)
imgContour = img.copy()
getContours(imgCanny)def image_process(img, size):imgResize = cv.resize(img, (int(img.shape[1] * size), int(img.shape[0] * size)))return imgResize# 原图尺寸缩小为原来的0.6倍
cv.imshow("Original", image_process(img, 0.6))
cv.waitKey(0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/650297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 数据分析实战——为什么销售额减少?酒卷隆治_案例1

# 为什么黑猫游戏的销售额会减少&#xff1f; # 数据集 DAU : 每天至少来访问一次的用户数据 数据内容 数据类型 字段名 访问时间 string&#xff08;字符串&#xff09; log_data 应用名称 string&#xff08;字符串&#xff09; app_name 用户 ID int&#xff08;数值&…

【机组】基于FPGA的32位算术逻辑运算单元的设计(EP2C5扩充选配类)

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 目录 一、实验目的 二、实验要求 …

acwing 质数 约数 欧拉函数

目录 质数试除法定质数分解质因数筛质数 约数试除法求约数乘积的约数个数最大公约数 欧拉函数筛法求欧拉函数和 质数 试除法定质数 bool is_prime(int num) {if(num < 2)return false;for(int i 2; i < num / i; i)if(num % i 0)return false;return true; }分解质因…

Javaweb之SpringBootWeb案例之阿里云OSS服务集成的详细解析

2.3.3 集成 阿里云oss对象存储服务的准备工作以及入门程序我们都已经完成了&#xff0c;接下来我们就需要在案例当中集成oss对象存储服务&#xff0c;来存储和管理案例中上传的图片。 在新增员工的时候&#xff0c;上传员工的图像&#xff0c;而之所以需要上传员工的图像&…

<蓝桥杯软件赛>零基础备赛20周--第18周--动态规划初步

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…

ASP.NET 7 Core Web 读取appsetting.json

把一些配置信息保存在json文件可以避免更改时要重新发布程序的烦恼。 我这里使用的是写一个类文件&#xff0c;然后通过program.cs启动的方式&#xff08;.net 6 开始没有startup了&#xff09;。 项目类型&#xff1a;ASP.NET Core Web MVC / .NET 7.0 / VS2022 第一步…

基于机器学习的地震预测(Earthquake Prediction with Machine Learning)

基于机器学习的地震预测&#xff08;Earthquake Prediction with Machine Learning&#xff09; 一、地震是什么二、数据组三、使用的工具和库四、预测要求五、机器学习进行地震检测的步骤六、总结 一、地震是什么 地震几乎是每个人都听说过或经历过的事情。地震基本上是一种自…

锂电池基本知识与设计

应用&#xff1a;笔记本电脑、智能手机等设备。 优点&#xff1a;较高能量密度和较长使用寿命&#xff0c;放电率低&#xff0c;可进一步延长充电间隔时间。 缺点&#xff1a;过度充电或者放电会产生不可逆的损伤&#xff0c;性能降低。高温环境下容易爆炸或者着火。 &#x…

el-tree基础的树形节点设置节点不能选中高亮出来,对已经选中的节点设置disabled,对当前节点刚选中后设置禁用disabled

一、 el-tree基础的树形节点设置节点不能选中高亮出来 需求 我们使用element-ui或者element-plus的时候会遇到树形控件的使用&#xff0c;我们使用树形控件会限制有的节点不让选中和高亮出来&#xff0c;这个时候需要我们做限制。在实现中我们发现了element-ui和element-plus…

WSL2+ubuntu 18+VsCode 配置C/C++开发环境 踩坑

1. 管理员模式打开cmd&#xff0c;或PowerShell &#xff0c;输入 wsl --install 可能出现的错误&#xff1a;无法解析服务器名称或地址 解决方式&#xff1a;科学上网 安装WSL时遇到“无法解析服务器名称或地址”的错误及解决方法 - 知乎 错误2&#xff1a;Error 0x8037…

CAD-autolisp——目录

目录页 写在前面&#xff1a;如果仅是想制作小工具&#xff0c;工具集这种&#xff0c;优先学习autolisp&#xff0c;如果想制作3d3s这种大型项目&#xff0c;或者包含大量计算&#xff0c;数据接力&#xff0c;网络通讯等功能&#xff0c;优先学习arx传送门 CAD-autolisp&…

Python tkinter (6) Listbox

Python的标准Tk GUI工具包的接口 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 GUI 目录 Listbox 创建listbox 添加元素…

TPCC-MySQL

简介 TPC-C是专门针对联机交易处理系统&#xff08;OLTP系统&#xff09;的规范&#xff0c;一般情况下我们也把这类系统称为业务处理系统。 Tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品&#xff0c;专用于MySQL基准测试。其源码放在launchpad上&#xff0c…

Python语言入门到精通之练习实例2:企业发放的奖金根据利润提成的问题

题目&#xff1a;企业发放的奖金根据利润提成。利润(I)低于或等于10万元时&#xff0c;奖金可提10%&#xff1b;利润高于10万元&#xff0c;低于20万元时&#xff0c;低于10万元的部分按10%提成&#xff0c;高于10万元的部分&#xff0c;可提成7.5%&#xff1b;20万到40万之间时…

style-components如何结合bootstrap样式

styled-components 是一个用于 React&#xff08;以及其他框架的变体版本&#xff09;的 CSS-in-JS 库&#xff0c;它允许你编写可复用、动态的样式&#xff0c;并直接在组件中定义它们。Bootstrap 是一个流行的前端 UI 框架&#xff0c;提供了预设的 CSS 样式和响应式的布局。…

C/C++ protobuf与json互转

测试环境 ubuntu16.04 64bitprotocbuf&#xff1a;3.9.1 &#xff08;支持json转换需>3.0.0&#xff09; 协议 syntax "proto2";message Person{optional string name 1;optional uint32 age 2;optional string address 3; }测试代码 //protobuf > 3.0.0#…

力扣0091——解码方法

解码方法 难度&#xff1a;中等 题目描述 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反向映射回字母&#…

sql 行转列 日周月 图表统计

目录 目录 需求 准备 月 分析 按月分组 行转列 错误版本 正确版本 日 分析 行转列 周 分析 按周分组 行转列 本年 需求 页面有三个按钮 日周月&#xff0c;统计一周中每天(日)&#xff0c;一月中每周(周)&#xff0c;一年中每月(月)&#xff0c;设备台数 点…

常用的gpt-4 prompt words收集8

本文介绍我最近收集的一些好用的chatgpt-4的prompts&#xff0c;如果你也有好用的提示词可以互相交流一下。 1. I ran into some trouble on my way to work. 迟到原因 2. In my heart, the most delicious coffee is the Hawaii Dirty from Manner. Only the Nong series a…

新概念英语第二册(42)下

【Key structures】 “have 名词”代替普通动词 “have 名词”代替普通动词表示“完成该动作”&#xff1a;have a bathbathe &#xff1b;have a swimswim&#xff1b;have a walkwalk&#xff1b;have a looklook&#xff1b;have a restrest&#xff1b;have a smell…