opencv resize_opencv-python库基础操作(一)

v2-f953b26f2ea8ea5d84604dc46badabe4_1440w.jpg?source=172ae18b

点赞再看,养成习惯!点赞再看,养成习惯!点赞再看,养成习惯!opencv-python库基础操作
0.安装opencv-python
pip install opencv-python
进行下载并安装
不过在python中导入opencv库的时候需要
"import cv2"来进行导入

下面用一只非常经典的猫咪开始练习使用opencv

v2-37b05f6f909627e51dacb2c21f93ee76_b.jpg


1.首先导包

import cv2 #opencv读取的格式是BGR,与一般的RGB不同
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
#这样子就不需要plt.show()

2.读取图像数据

picture_path = "cat.jpg"
img = cv2.imread(picture_path)
看一下shape(可以发现是3通道的)
img.shape

v2-2814306a2716d9d49084335802b0a33b_b.jpg
img.size(用来查看图像总的像素有多少个)

v2-5327b3f189b79a46cfd056a8fc39a914_b.png


3.将图片展示出来

cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

其实也可以使用

import matplotlib.pyplot as plt
plt.imshow(img)

来对图片进行展示
但,opencv读取的格式是BGR,与一般的RGB不同,直接读会长这样子:(需要opencv进行RGB的转换)

v2-c2da354e6f3260a3d726a3d17caff7ef_b.jpg

4.下面用函数进行“图像展示”的封装

def cv_show(name,img):cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()

5.转化为灰度图:

img = cv2.imread(picture_path, cv2.IMREAD_GRAYSCALE)
cv_show("img",img)

v2-ca2059afb714d27d6e3714e693ab8f77_b.jpg


6.图像的保存

cv2.imwrite("mycat.png" , img )

7.截取部分图像数据

img = cv2.imread("cat.jpg")
cat = img[0:200, 0:300]
cv_show("cat" , cat)

v2-6d10c7a818195e54063b3917f2318215_b.jpg


8. 颜色通道提取

#注意顺序为BGR
b,g,r = cv2.split(img)

v2-e0b7954ed414aee9a51fda0b36c49559_b.jpg


9.颜色通道合并

img = cv2.merge((b,g,r))

10.只保留单个颜色通道

#只保留R
cur_img = img.copy()#将B,G通道设置为0
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0cv_show("R" , cur_img)

v2-85dc2d47942a75ef1aa6e743f6480d02_b.jpg


(纯红看着有点吓人!)

#只保留G
cur_img = img.copy()#将B,R通道设置为0
cur_img[:,:,0] = 0
cur_img[:,:,2] = 0cv_show("g" , cur_img)

v2-2e9906740a4f0e8cc1db6e3fc2e12d3d_b.jpg
#只保留B
cur_img = img.copy()#将R,G通道设置为0
cur_img[:,:,1] = 0
cur_img[:,:,2] = 0cv_show("B" , cur_img)

v2-190c7d6271618209d057256678d9c7ad_b.jpg


11.数值计算
因为读取进来之后就直接做np.array格式处理了,所以部分处理方式可以借鉴np.array

img_cat = cv2.imread("cat.jpg")
cv_show("123" , img_cat + 10)

v2-510887dec227463e83539e65c000105e_b.jpg
img_cat = cv2.imread("cat.jpg")
img_cat2 = img_cat + 10
img_cat2 + img_cat

(因为我们的像素值范围是[0,255],所以如果相加>255,则会做%255处理)

v2-a860f98fc52180c4181b5a9d6951a8eb_b.jpg


12. 图像融合

img_cup = cv2.imread("1_51.jpg")

这个图片长这样:

v2-d70414337aa22a075ed9943e3fd5eb5a_b.jpg


如果直接相加:

img_dog  + img_cat

则报错

v2-51455c7e5478151da268ffff7366e3ce_b.png


需要先将某一张图片进行resize处理

img_dog = cv2.resize(img_dog , (640,391))#注意这里是x,y,而shape那边是y,x
img_dog.shape

v2-1708fc05126216a3bdfeb4f844295772_b.jpg

同时对于这个resize函数,还可以使用缩小放大功能

res = cv2.resize(img_cat , (0,0) , fx = 2, fy = 2)

#这样子就是放大两倍

用addWeighted函数就可以将二者融合在一起!

res1 = cv2.addWeighted(img_cat,0.4,img_dog,0.6,20)

看起来还真是有点魔幻!

v2-70cb9aa6fbc0abdb3ccaffd3317b180a_b.jpg

基础操作先到这里,接下来会上一些更加高级有用的操作!

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

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

相关文章

百旺智能编码_【百旺】票字版开票软件操作指南已为您备好,请查阅!

为确保小规模纳税人继续享受税收优惠政策,请广大用户及时对开票软件进行升级~按照国家税务总局要求,从增值税发票税控开票软件五月补丁开始,将停止对增值税发票税控开票软件(税控盘版)“税”字版(以下简称“税”字版)的软件升级更新服务&…

mysql binlog 备份_做好mysql运维,必须熟练掌握备份和恢复,实战一次不行多来几次...

原文:https://www.toutiao.com/i6855460778359816715/平台:头条作者:程序员不就是0和1一、 备份恢复策略进行备份或恢复操作时需要考虑一些因素:1、确定要备份的表的存储引擎是事务型还是非事务型,两种不同的存储引擎备…

在过程中要正式批准可交付成果_干货!软考高项项目管理知识体系5大过程组47个过程...

现在应该很多小伙伴都在紧张的复习软考中,为了让大家更加高效的复习,今天给大家分享软考高级信息系统项目管理师的考试重点,项目管理知识体系的5大过程组47个过程。考高项的朋友都知道,47个过程是非常重要的,必须要理解…

android 组件化_Android 组件化路由框架设计(仿Arouter)

前言在组件化开发中一个必须要面对的问题就是组件间页面跳转,实现的方法有很多,简单的可以通过反射获取,但是比较耗费性能,也可以通过隐式跳转,但是随着页面的增多,过滤条件会随之增多,后期维护…

1668智能下数教程视频_你需要的教程合集更新

最近又收集了一波网络安全资源,在文章最底部。花了将近一天时间整理,只求各位小哥哥能点个在看,分享给身边的朋友。网络安全 --职业发展(渗透的最底部)2019网络安全初识与职业发展https://pan.baidu.com/s/1CAzO8IWxzBj-bOZlJ2eFVg 提取码&am…

关于java中nextline读取空白行的问题

最近在做java作业, 发现了一个问题, 就是nextline其实会接收缓冲区的\r, 使得在程序运行时nextline像是跳过了一样, 其实不然, 它只是读取了上一个enter时的\r, 如我的如下功能代码 public void run() {Scanner scan new Scanner(System.in);int ord, book_order;int flag 0;…

推荐系统——协同过滤

协同过滤 协同过滤算法一般是通过用户之前的喜好或者相似的用户的喜好来推荐商品 基于领域的协同过滤算法一般有两种算法: 基于用户的协同过滤算法(UserCF):基于与用户相似用户的喜好进行推荐基于物品的协同过滤算法(ItemCF):基于用户喜好的物品寻找相似的物品进…

电感检测_几种常用的电流检测方式

RT1720 是一款最高输入电压可达 80V、输出电压可达 60V 的热插拔控制器,它的作用是防止系统受到过高电压和负电压的攻击,同时还能防范过电流可能导致的问题,它的一种应用电路大致如下图所示:为了检测负载电流的大小,RS…

推荐系统——矩阵分解FM

矩阵分解 隐语义模型与矩阵分解 之所以我们提出隐语义模型与矩阵分解,原因就是[[协同过滤]]存在泛化能力弱的问题 而对于隐语义模型而言,我们可以利用隐向量来代表隐藏信息 此外,也可以在一定程度上弥补[[协同过滤]]处理稀疏矩阵能力不足的…

千位分隔符的完整攻略

千位分隔符[1]是很常见的需求,但是输入文本千变万化,如何才能准确添加千分符呢? 纯整数情况 纯整数大概是所有情况里最简单的一种,我们只要正确匹配出千分位就好了。 观察上面的数字,我们可以得出千分位的特征是到字符…

限制按钮点击_Android | 使用 AspectJ 限制按钮快速点击

前言在Android开发中,限制按钮快速点击(按钮防抖)是一个常见的需求;在这篇文章里,我将介绍一种使用AspectJ的方法,基于注解处理器 & 运行时注解反射的原理。如果能帮上忙,请务必点赞加关注&…

svn不知道这样的主机 怎么解决_家里装修不知道怎么配置净水器,这几招教你轻松解决...

为了保障家庭饮水健康,很多业主都会选择在家中安装一台厨下净水器。但是,如若仅靠它来满足全家人日常洗漱,沐浴和饮用,这势必会极大地影响到全家人的生活品质。这个时候,实阳机电良心建议,全屋净水系统&…

redis系列:通过文章点赞排名案例学习sortedset命令

前言 这一篇文章将讲述Redis中的sortedset类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了。 项目Github地址:https://github.com/rainbowda/learnWay/tree/master/learnRedis/case-sortedset 案例 demo功能是文章点赞排名等等&am…

xml生成2维码_MyBatis(2)之MyBatis-Generator最佳实践

自定义注释自定义注解指定xml文件模式上一篇文章详细阐述了xml配置文件的各种标签及其含义。其实从标签开始,每一个标签都对应一个实体类。context.class对应标签,而每一个子标签都对应一个属性;如图:标签与实体类的对应关系。有了…

nginx 配置详解_Nginx 配置详解

序言Nginx是lgor Sysoev为俄罗斯访问量第二的http://rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持Fast…

推荐系统——GBDT+LR

[[逻辑回归模型]] 逻辑回归是在[[线性回归]]的基础上添加了一个Sigmoid函数(非线形)映射,从而可以使逻辑回归成为一个优秀的分类算法 逻辑回归假设数据服从[[伯努利分布]],通过[[极大化似然函数]]的方法,运用[[梯度下降…

从燃尽图看项目管理:你的项目哪里出错了?(燃尽图类型全解析)

什么是燃尽图 燃尽图(burn down chart)是在项目完成之前,对需要完成的工作任务的一种可视化表示。理想情况下,该图表是一个向下的曲线,随着项目任务的逐渐完成“烧尽”至零。 燃尽图常常用于敏捷开发中,作为…

springtboot 引用子工程的文件_xmake从入门到精通11:如何组织构建大型工程

xmake是一个基于Lua的轻量级现代化c/c的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。本文主要详细讲解下,如何通过配置子工程模块,来组织构建一个大规模…

依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理?

SpringBoot中的起步依赖(starter)是一组特定功能的依赖项集合,SpringBoot通过starter来进行项目的依赖管理,而不是直接基于单独的依赖项来进行依赖管理。starter其实就是特殊的Maven依赖项或者Gradle依赖项,它把常用的库组合到一起构成了一个…

5g理论速度_5G是什么?5G速度有多快?

原标题:5G是什么?5G速度有多快?5G到底是什么东西?今年5G网络会普及吗?5G网速到底有多快,背后又有哪些黑科技?近日,全球首个5G火车站在上海虹桥火车站启动建设。而根据三大运营商的时…