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,一经查实,立即删除!

相关文章

Page object设计模式

网上看了很多文章,充斥了大量代码。理解起来不容易,在此就我的理解谈谈PageObject设计模式到底是什么东西。 所谓的Page object模式,主要是编写不同层级的脚本,然后一层一层的继承来完成对web测试过程进行分解。 首先:…

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

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

洛谷-图的遍历-P2661-信息传递

#include <iostream> #include <cstdio> using namespace std; const int N 200010; int n, fa[N], ans 0x3f3f3f3f; int get (int x, int &cnt) { //cnt记录环的长度 cnt ;if (fa[x] x) return x;else return get(fa[x], cnt); } int main () {scanf("…

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

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

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

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

jquery每次动态加载dom,绑定事件会多一次,

jquery绑定事件,每次动态加载dom,绑定的事件会加1,比如动态加载dom5次,点那个点击事件会弹出5次 解决办法就是在每次绑定之前解绑定. $(.seek-footer .btn1).off(click); // 先解绑 $(.seek-footer .btn1).on(click,function () {}) 再绑定 转载于:https://www.cnblogs.com/ybi…

洛谷P3119

省选难度啊啊啊 经评论区的朋友提醒&#xff0c;代码已订正 先说一下该题思路: 首先,这题并非是求最短路,而是求最长路(最长路常用算法一般是拓扑排序,而我这个蒟蒻还没有学会QAQ) 但是这一题既然标签是连通图,那么肯定要用tarjan,考虑到缩点之后每个缩点都具有一定数量的点数,…

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

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

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

最近又收集了一波网络安全资源&#xff0c;在文章最底部。花了将近一天时间整理&#xff0c;只求各位小哥哥能点个在看&#xff0c;分享给身边的朋友。网络安全 --职业发展(渗透的最底部)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;…

python汉字长度_行中字符串的长度(Python)

我正在尝试将一个.txt文件导入到一些专有软件中&#xff0c;但似乎不断收到一个错误。txt文件的大小几乎是2GB&#xff0c;大约有5600万行。 与制造商交谈后&#xff0c;他们说其中一条线路可能有错误。每一行应该包含一个MD5哈希值&#xff08;32个字符&#xff09;&#xff0…

pilz pnoz s4说明书_如何使用Pilz的安全继电器PNOZ S4?

前面的文章我们曾介绍过皮尔磁(Pilz)的安全继电器PNOZ X3和X2.7P/2.8P &#xff0c;(参考&#xff1a;如何使用Pilz的安全继电器PNOZ X2.7P/X2.8P&#xff1f;)今天这篇文章&#xff0c;我们来介绍另外一款安全继电器产品PNOZ s4.PNOZ s4可以用于急停按钮、安全门、安全开关等场…

推荐系统——协同过滤

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

apriori算法代码_sklearn(九)apriori 关联规则算法,以及FP-growth 算法

是什么&#xff1a;apriori算法是第一个关联规则挖掘算法&#xff0c;利用逐层搜索的迭代方法找出数据库中的项集&#xff08;项的集合&#xff09;的关系&#xff0c;以形成规则&#xff0c;其过程由连接&#xff08;类矩阵运算&#xff09;与剪枝&#xff08;去掉没必要的中间…

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

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

推荐系统——矩阵分解FM

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

python wait_Python的等效Java函数wait(),notify(),synchronized

我必须在Python 2.7中编写一个类,我有一些问题. 我最近来自java背景和学习python 如果我必须在java中做,我会写这些 public class CommandSender extends Thread { private boolean isTimeOut; private boolean running; private ArrayList 我现在做了什么 class CommandSender…

千位分隔符的完整攻略

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

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

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

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

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