opencv库图像基础2-python
opencv库图像基础2-python
图像的简单变换
先导入库
import cv2
import matplotlib.pyplot as plt
import numpy as np
1.图像的放大和缩小
使用函数cv2.resize()
放大图像
resized_img = cv2.resize(img,(width*2,height*2), interpolation=cv2.INTER_LINEAR)
这个代码的作用是将图像 img 的宽度和高度扩大两倍。它使用 OpenCV 库中的 cv2.resize() 函数来实现。
cv2.resize() 函数有三个参数:
img:要调整大小的图像。
dsize:调整大小后的图像的大小。它是一个元组,其中包含宽度和高度。
interpolation:插值方法。它用于在调整大小时插入新像素。
在本例中,dsize 参数的值为 (width2,height2),表示将宽度和高度扩大两倍。interpolation 参数的值为 cv2.INTER_LINEAR,表示使用双线性插值。
缩小图像
small_img = cv2.resize(img,None,fx=0.5,fy=0.5, interpolation=cv2.INTER_LINEAR)
将图片缩小为原图的一半,其中:
img 是原图。
small_img 是缩小后的图像。
fx 和 fy 是缩放比例,0.5 表示缩小一半。
interpolation 是插值方法,cv2.INTER_LINEAR 是双线性插值,是默认值。
2.图像平移
平移函数cv2.warpAffine
height,width=img.shape[:2]
M1 = np.float32([[1,0,100],[0,1,50]])
move_img = cv2.warpAffine(img,M1,(width,height))
其中:
img 是原图。
height 和 width 是原图的高度和宽度。
M1 是变换矩阵,表示平移操作。
move_img 是平移后的图像。
变换矩阵 M1 的每一行表示一个点在变换后的图像中的位置。在本例中,第一行表示原图中 (0,0) 点在变换后的图像中的位置为 (100,0),第二行表示原图中 (0,1) 点在变换后的图像中的位置为 (0,50)。
这个代码的作用是将原图 img 在右边平移 100 像素,在下平移 50 像素。
3.图像旋转
cv2.warpAffine()函数
height,width = img.shape[:2]
center = (width/2.0,height/2.0) #旋转的中心
M3 = cv2.getRotationMatrix2D(center, 180, 1) #旋转过程中没有缩放,这里180指的是顺时针180度
rotation_img = cv2.warpAffine(img,M3,(width,height))
plt.imshow(rotation_img)
4.图像仿射变换
p1=np.float32([[120,35],[215,45],[135,120]])
p2=np.float32([[135,45],[300,110],[130,230]])
M4=cv2.getAffineTransform(p1,p2) #计算一个变换矩阵
trans_img =cv2.warpAffine(img,M4,(width,height))
plt.imshow(trans_img)
5.图像裁剪
crop_img = img[20:500,200:400]
plt.imshow(crop_img)
6.图像的位运算
先创建两个图片,一个是矩形一个是圆形
矩形
rectangle=np.zeros((300,300),dtype='uint8')
rect_img=cv2.rectangle(rectangle,(25,25),(275,275),255,-1)
plt.imshow(rect_img)
输出
圆形
rectangle=np.zeros((300,300),dtype='uint8')
circle_img=cv2.circle(rectangle,(150,150),150,255,-1)
plt.imshow(circle_img)
输出
与运算
and_img=cv2.bitwise_and(rect_img,circle_img)
plt.imshow(and_img)
或运算
or_img=cv2.bitwise_or(rect_img,circle_img)
plt.imshow(or_img)
异或运算
xor_img=cv2.bitwise_xor(rect_img,circle_img)
plt.imshow(xor_img)
7.图像的分离与融合
分离
(B,G,R)=cv2.split(img)
融合
zeros = np.zeros(img.shape[:2],dtype='uint8')
plt.imshow(cv2.merge([zeros,zeros,R]))
8.颜色空间color space
灰度
gray =cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
plt.imshow(gray)
HSV,色度,饱和度,纯度
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
plt.imshow(hsv)
lab,一个亮度通道,两个颜色通道
lab=cv2.cvtColor(img,cv2.COLOR_BGR2LAB)
plt.imshow(lab)
opencv库图像基础2-python的更多相关文章
- python中在计算机视觉中的库及基础用法
基于python脚本语开发的数字图像处理包有很多,常见的比如PIL.Pillow.opencv.scikit-image等.PIL和pillow只提供了基础的数字图像处理,功能有限:OpenCV实际上 ...
- 使用Python+OpenCV进行图像模板匹配(Match Template)
2017年9月22日 BY 蓝鲸 LEAVE A COMMENT 本篇文章介绍使用Python和OpenCV对图像进行模板匹配和识别.模板匹配是在图像中寻找和识别模板的一种简单的方法.以下是具体的步骤 ...
- opencv读取图像python和c++版本的结果不同
问题: 在读取同一张图像时,python读取的结果和c++读取的结果差异较大,测试图像中最大误差达到16. 原因: python的opencv采用的是4.1.1,c++采用的是3.1.0,在解析JPE ...
- OpenCV - opencv3 图像处理 之 图像缩放( python与c++实现 )
转自:https://www.cnblogs.com/dyufei/p/8205121.html 一. 主要函数介绍 1) 图像大小变换 cvResize () 原型: voidcvResize(co ...
- Python如何安装OpenCV库
转载:https://blog.csdn.net/weixin_35684521/article/details/81953047 OpenCV的概念可百度,在此不再赘述.https://baike. ...
- Python的Opencv库怎么装
原文章写于时间2019.4 当时鼓捣Opencv库弄了好长时间,前前后后弄了五天,找了好多帖子不知道删除重装了多少次,现在把我试出来正确的方法给大家分享一下. 1.Pycharm 我用的是win10系 ...
- python(4): regular expression正则表达式/re库/爬虫基础
python 获取网络数据也很方便 抓取 requests 第三方库适合做中小型网络爬虫的开发, 大型的爬虫需要用到 scrapy 框架 解析 BeautifulSoup 库, re 模块 (一) r ...
- python安装opencv库
1.打开anaconda prompt(安装anaconda会默认安装),键入 pip install opencv-python,如下: 2.安装过程如下所示: 3 测试是否安装成功 上述就说明安装 ...
- python的库有多少个?python有多少个模块?
这里列举了大概500个左右的库: ! Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...
- 简单的调用OpenCV库的Android NDK开发 工具Android Studio
前言 本博客写于2017/08/11, 博主非专业搞安卓开发, 只是工作的需要倒腾了下Android NDK相关的开发, 博文中有什么不正确.不严格的地方欢迎指正哈 本文后续也许还会有删改, 就 ...
随机推荐
- C# 使用RabbitMQ消息队列
参考文章 https://www.cnblogs.com/kiba/p/11703073.html和https://www.cnblogs.com/longlongogo/p/6489574.html ...
- SqlSugar分组查询
一.分组查询和使用 1.1 语法 只有在聚合对象需要筛选的时候才会用到Having,一般分组查询用不到可以去掉 var list = db.Queryable<Student>() ...
- Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本.图像等领域,支持文搜.图搜文.图搜图匹配搜索 Similarities 相似度计算.语义匹配搜索工具包,实现 ...
- tensorflow语法【tf.random.categorical()、tf.clip_by_value()、tf.placeholder()、tf.Session()】
相关文章: [一]tensorflow安装.常用python镜像源.tensorflow 深度学习强化学习教学 [二]tensorflow调试报错.tensorflow 深度学习强化学习教学 [三]t ...
- 5.13 汇编语言:仿写For循环语句
循环语句(for)是计算机编程中的一种基本控制结构,它允许程序按照指定的次数或范围重复执行一段代码块.for循环在处理需要进行迭代操作的情况下非常有用,它使得程序可以更加方便地控制循环的次数.一般来说 ...
- Qt信号槽原理
1.说明 使用Qt已经好几年了,一直以为自己懂Qt,熟悉Qt,使用起来很是熟练,无论什么项目,都喜欢用Qt编写.但真正去看Qt的源码,去理解Qt的思想也就近两年的事. 本次就着重介绍一下Qt的核心功能 ...
- 中兴BE7200Pro+的WIFI 7路由器开箱
上一个讨论的帖子:https://www.chiphell.com/thread-2573626-1-1.html . 对应小米WIFI 7路由器BE6500 Pro开箱的帖子:https://www ...
- 【算法】【回溯】N皇后问题【力扣-51】超详细的注释和解释手撕N皇后
[算法][回溯]N皇后问题[力扣-51]超详细的注释和解释手撕N皇后 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要的动力 看完之后别忘记关注我 ...
- Flink-postgres-cdc实时同步报错:无法访问文件 "decoderbufs": 没有那个文件或目录
问题描述 Caused by: org.postgresql.util.PSQLException: 错误: 无法访问文件 "decoderbufs": 没有那个文件或目录 解决办 ...
- RAPTOR:递归摘要与树形检索的结合,提升RAG检索性能
RAPTOR:递归摘要与树形检索的结合,提升RAG检索性能 来源:ICLR'24 https://arxiv.org/pdf/2401.18059.pdf 随着 LLM 技术的发展,RAG 的价值也来 ...