OpenCV-图像的基本操作-01
数据读取-图像
import cv2 #opencv读取的格式是BGR
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
img=cv2.imread('cat.jpg')
img
plt.imshow(img)
#图像的显示,也可以创建多个窗口
cv2.imshow('image',img)
# 等待时间,毫秒级,0表示任意键终止
cv2.waitKey(0)
cv2.destroyAllWindows()
# 定义显示图像函数
def cv_show(name,img):cv2.imshow(name,img) cv2.waitKey(0) cv2.destroyAllWindows()
cv_show("mao",img)
img.shape # 高宽 3表示通道 代表彩色
cv2.IMREAD_COLOR:彩色图像
cv2.IMREAD_GRAYSCALE:灰度图像
img=cv2.imread('cat.jpg',cv2.IMREAD_GRAYSCALE)
img
img.shape
#图像的显示,也可以创建多个窗口
cv2.imshow('image',img)
# 等待时间,毫秒级,0表示任意键终止
cv2.waitKey(10000)
cv2.destroyAllWindows()
#保存
cv2.imwrite('mycat.png',img)
数据读取-视频
cv2.VideoCapture可以捕获摄像头,用数字来控制不同的设备,例如0,1。
如果是视频文件,直接指定好路径即可
import cv2
vc = cv2.VideoCapture('test.mp4') # 制定视频路径
# 检查是否打开正确
if vc.isOpened(): oepn, frame = vc.read() # 如果能打开返回视频中每帧结果为True
else:open = False
while open:ret, frame = vc.read()# 如果能打开就遍历没一帧if frame is None: # 如果读取的视频不为空继续执行为空就breakbreakif ret == True: # 如果能打开返回视频中每帧结果为Truegray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # cv2.COLOR_BGR2GRAY对每一帧转换为黑白cv2.imshow('result', gray) # 显示结果if cv2.waitKey(1) & 0xFF == 27: # waitKey(1) 表示等待下一帧的时间 退出:Esc的ASCII码为27,即判断是否按下esc键break
vc.release()
cv2.destroyAllWindows() # 循环完自动关闭窗口
截取部分图像数据
img=cv2.imread('cat.jpg') # 读取图片
cat=img[0:50,0:200] # 切片
cv_show('cat',cat) # 显示名字以及图像
颜色通道提取
b,g,r=cv2.split(img) # 彩色图像通道:b g r # 读取图片
img=cv2.merge((b,g,r)) # 组合像素
img.shape
颜色通道B,G,R = 0,1,2
# 只保留R
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0
cv_show('R',cur_img)
# 只保留G
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,2] = 0
cv_show('G',cur_img)
# 只保留B
cur_img = img.copy()
cur_img[:,:,1] = 0
cur_img[:,:,2] = 0
cv_show('B',cur_img)
边界填充
top_size,bottom_size,left_size,right_size = (50,50,50,50) # 上下左右 填充的值# img需要填充的图像 上下左右 按照什么方式填充
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_CONSTANT, value=0)
import matplotlib.pyplot as plt
plt.subplot(231), plt.imshow(img, 'gray'), plt.title('ORIGINAL')
plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title('REPLICATE')
plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('REFLECT')
plt.subplot(234), plt.imshow(reflect101, 'gray'), plt.title('REFLECT_101')
plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP')
plt.subplot(236), plt.imshow(constant, 'gray'), plt.title('CONSTANT')plt.show()
BORDER_REPLICATE:复制法,也就是复制最边缘像素。
BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg
BORDER_CONSTANT:常量法,常数值填充。
数值计算
# 读取图片
img_dog=cv2.imread('dog.jpg')
img_cat=cv2.imread('cat.jpg')
img_cat[:5,:,0] # 只打印前5行
img_cat2= img_cat + 10
img_cat2[:5,:,0] # 只打印前5行
#相当于% 256
(img_cat + img_cat2)[:5,:,0]
cv2.add(img_cat,img_cat2)[:5,:,0]
图像融合
res = cv2.resize(img, (0, 0), fx=4, fy=4) # 假入我们不知道图像大小为0,0, 倍数: fx=4:x*4 fy=4:y*4 比例放缩
plt.imshow(res)
res = cv2.resize(img, (0, 0), fx=1, fy=3)
plt.imshow(res)
img_dog=cv2.imread('dog.jpg')
img_cat=cv2.imread('cat.jpg')# 读取图片
img_dog = cv2.resize(img_dog, (500, 414)) # 修改图片大小
img_cat.shape,img_dog.shape
# 猫= x1 狗= x2# 猫 权重 狗 权重 亮度# x1,α x2, β ,b
res = cv2.addWeighted(img_cat, 0.5, img_dog, 0.5, 0)
plt.imshow(res)
OpenCV-图像的基本操作-01相关推荐
- OpenCV图像的基本操作
使用工具Python3.5 使用包cv2,numpy 1.获取并修改像素值 读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值 import ...
- Opencv-Python学习(一)———图像的基本操作
目录 一.Opencv简介 二.安装Opencv 三.Opencv图像的基本操作 一.Opencv简介 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以 ...
- python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算
图像的基本操作 在上个教程中,我们介绍了使用鼠标画笔的功能.本次教程,我们将要谈及OpenCV图像处理的基本操作. 本次教程的所有操作基本上都和Numpy相关,而不是与OpenCV相关.要使用Open ...
- vc如何打开plt图像_opencv_python从zero到hero————之图像基本操作01
微信公众号:小白图像与视觉 关于技术.关注yysilence00.有问题或建议,请公众号留言. 主题:opencv_python从zero到hero----之图像基本操作01 1.版本:opencv3 ...
- 【opencv学习笔记】003之图像像素基本操作(获取像素指针、范围处理)及掩膜操作(filter2D)详解
目录 一.前言 二.图像像素基本操作 1.获取图像像素指针 1.获取图像像素指针是什么? 2.相应API 3.获取目的 2.像素范围处理saturate_cast 1.像素范围处理是什么? 2.像素范 ...
- Opencv图像基本操作
唐宇迪博士opencv课程学习笔记 Opencv图像基本操作 数据读取-图像 数据读取-视频 截取部分图像数据 颜色通道提取 边界填充 数值计算 图像融合 图像重构 数据读取-图像 cv2.IMREA ...
- opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)
0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...
- OpenCV图像操作
OpenCV图像操作 OpenCV图像操作 输入输出 图片 图像的基本操作 访问像素强度值 内存管理和引用计数 原始操作 可视化图像 OpenCV图像操作 输入输出 图片 C ++ 从文件加载图像: ...
- 【学习OpenCV4】图像的基本操作
图像的基本操作 一.图像色彩空间转换 1.1 基本知识 1.2 创建类 1.3 编写主函数 1.4 测试结果 二.图像对象的创建与复制 2.1 什么是Mat 2.2 创建空白图像 2.3 图像的复制 ...
- opencv图像校正
opencv图片矫正 基本操作:图像的翻转(镜像).平移.旋转.仿射与透视变换(OPENCV C++) 常用图像函数:几个常见的cv函数,cvtcolor.gaussianblur.canny等等 旋 ...
最新文章
- android log时间,android – Logcat的日志时间戳不按顺序排列
- java oracle rs.next_使用jsp连接oracle时,rs.next()值始终为false,表中存在数据
- Tomcat、JBOSS、WebSphere、WebLogic、Apache之间的区别
- .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析
- excel如何生成mysql的sql语句_excel 批量生成SQL语句
- 动态规划 - 最长递增子序列LIS
- Golang笔记——反射
- NeurIPS2021 VALUE:快来刷榜吧!微软提出视频多模态新基准,同时含检索、caption、QA等多个任务!...
- Java设计模式介绍
- hcia第五天 结课
- 天刀论剑显示服务器,《天涯明月刀ol》服务器维护公告 天下镖和论剑优化
- java 堆栈信息分析_Java堆栈信息分析
- Vue.js快速原型开发问题汇总
- Java面向对象系列[v1.0.0][枚举类]
- 盯盯拍罗勇:公司就是我最好的产品
- 重磅!2019上海落户政策大全!
- java毕业设计鞍山丘比特房屋租赁管理系统Mybatis+系统+数据库+调试部署
- 电脑实时监控信息:CPU 内存 GPU使用率在桌面上动态展现
- Could not load the following font :pdfFontName : STSong-Light问题
- php制作404,thinkphp制作404跳转页的简单实现方法
热门文章
- mysql读取求和_MySQL从单独的表中获取求和值
- TP5的目录常量和路径
- JS判断字符串是否为整数--简单的正则判断
- ikm java_2013Morgan Stanley IKM assessment
- js的异步请求出现同步效果
- iphone文件夹如何添加服务器,iPhone怎么在文件夹内新建文件夹 iPhone在文件夹内新建文件夹方法...
- mysql function select 赋值_MySql 进阶
- linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家
- asp.core api 通过socket和服务器通信发送udp_python socket之TCP/UDP
- linux:scp命令