数据读取-图像

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相关推荐

  1. OpenCV图像的基本操作

    使用工具Python3.5 使用包cv2,numpy 1.获取并修改像素值 读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值 import ...

  2. Opencv-Python学习(一)———图像的基本操作

    目录 一.Opencv简介 二.安装Opencv 三.Opencv图像的基本操作 一.Opencv简介 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以 ...

  3. python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算

    图像的基本操作 在上个教程中,我们介绍了使用鼠标画笔的功能.本次教程,我们将要谈及OpenCV图像处理的基本操作. 本次教程的所有操作基本上都和Numpy相关,而不是与OpenCV相关.要使用Open ...

  4. vc如何打开plt图像_opencv_python从zero到hero————之图像基本操作01

    微信公众号:小白图像与视觉 关于技术.关注yysilence00.有问题或建议,请公众号留言. 主题:opencv_python从zero到hero----之图像基本操作01 1.版本:opencv3 ...

  5. 【opencv学习笔记】003之图像像素基本操作(获取像素指针、范围处理)及掩膜操作(filter2D)详解

    目录 一.前言 二.图像像素基本操作 1.获取图像像素指针 1.获取图像像素指针是什么? 2.相应API 3.获取目的 2.像素范围处理saturate_cast 1.像素范围处理是什么? 2.像素范 ...

  6. Opencv图像基本操作

    唐宇迪博士opencv课程学习笔记 Opencv图像基本操作 数据读取-图像 数据读取-视频 截取部分图像数据 颜色通道提取 边界填充 数值计算 图像融合 图像重构 数据读取-图像 cv2.IMREA ...

  7. opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)

    0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...

  8. OpenCV图像操作

    OpenCV图像操作 OpenCV图像操作 输入输出 图片 图像的基本操作 访问像素强度值 内存管理和引用计数 原始操作 可视化图像 OpenCV图像操作 输入输出 图片 C ++ 从文件加载图像: ...

  9. 【学习OpenCV4】图像的基本操作

    图像的基本操作 一.图像色彩空间转换 1.1 基本知识 1.2 创建类 1.3 编写主函数 1.4 测试结果 二.图像对象的创建与复制 2.1 什么是Mat 2.2 创建空白图像 2.3 图像的复制 ...

  10. opencv图像校正

    opencv图片矫正 基本操作:图像的翻转(镜像).平移.旋转.仿射与透视变换(OPENCV C++) 常用图像函数:几个常见的cv函数,cvtcolor.gaussianblur.canny等等 旋 ...

最新文章

  1. android log时间,android – Logcat的日志时间戳不按顺序排列
  2. java oracle rs.next_使用jsp连接oracle时,rs.next()值始终为false,表中存在数据
  3. Tomcat、JBOSS、WebSphere、WebLogic、Apache之间的区别
  4. .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析
  5. excel如何生成mysql的sql语句_excel 批量生成SQL语句
  6. 动态规划 - 最长递增子序列LIS
  7. Golang笔记——反射
  8. NeurIPS2021 VALUE:快来刷榜吧!微软提出视频多模态新基准,同时含检索、caption、QA等多个任务!...
  9. Java设计模式介绍
  10. hcia第五天 结课
  11. 天刀论剑显示服务器,《天涯明月刀ol》服务器维护公告 天下镖和论剑优化
  12. java 堆栈信息分析_Java堆栈信息分析
  13. Vue.js快速原型开发问题汇总
  14. Java面向对象系列[v1.0.0][枚举类]
  15. 盯盯拍罗勇:公司就是我最好的产品
  16. 重磅!2019上海落户政策大全!
  17. java毕业设计鞍山丘比特房屋租赁管理系统Mybatis+系统+数据库+调试部署
  18. 电脑实时监控信息:CPU 内存 GPU使用率在桌面上动态展现
  19. Could not load the following font :pdfFontName : STSong-Light问题
  20. php制作404,thinkphp制作404跳转页的简单实现方法

热门文章

  1. mysql读取求和_MySQL从单独的表中获取求和值
  2. TP5的目录常量和路径
  3. JS判断字符串是否为整数--简单的正则判断
  4. ikm java_2013Morgan Stanley IKM assessment
  5. js的异步请求出现同步效果
  6. iphone文件夹如何添加服务器,iPhone怎么在文件夹内新建文件夹 iPhone在文件夹内新建文件夹方法...
  7. mysql function select 赋值_MySql 进阶
  8. linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家
  9. asp.core api 通过socket和服务器通信发送udp_python socket之TCP/UDP
  10. linux:scp命令