首页 > 其他分享 >学习笔记1

学习笔记1

时间:2023-09-22 10:49:12浏览次数:37  
标签:plt img axes cv2 笔记 学习 图像 cv

python使用opencv获取图像尺寸(高宽深)

import cv2 as cv
img = cv.imread("D:\\test.jpg")
size = img.shape
h = size[0]     #高度
w = size[1]     #宽度 
chan = size[2]  #通道数

img.size #像素数目
print(size)
结果
(512,512,2)

imread返回的是numpy.ndarray对象,[高,宽,通道数]

 

cv2.imshow(winname,mat)

cv.imshow("name",mat)

mat是一个图片矩阵,numpy.ndarry类型

加上下面一句,让图像持续显示,0表示显示无限长时间

cv.waitKey(0)

 

用cv2.imwrite()保存图片

cv.imwrite("name",img)

 

使用cv2.cvtColor()函数来转换图片颜色空间

cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 将BGR图像转换为灰度图像
  • cv2.COLOR_BGR2RGB # 将BGR图像转换为RGB图像
  • cv2.COLOR_BGR2GRAY # 将BGR图像转换为灰度图像
  • cv2.COLOR_GRAY2BGR # 将灰度图像转换为BGR图像
 

 

彩色图片转灰度图可以直接读取灰度

import cv2 as cv
img = cv.imread('lbxx.jpg',0)  #直接以灰度图片读取
img_1 = cv.imread('lbxx.jpg',cv.IMREAD_GRAYSCALE)  

 

numpy使用astype转化数据类型,float默认转化为64位,可以使用np.float32指定为32位

#numpy转化float类型
a= np.array([1,2,3])
a = a.astype(np.float)
print(a)
print(a.dtype)

 

为了方便进行卷积,需要将opencv导入的numpy变成张量,然后再将tensor类型转换为32位浮点型
img_t = img_t.type(torch.float32)#将tensor类型转为float32
img_t = img_t.float() #也可以转为float32

 

 

matplotlib显示图像

 

plt.figure(figsize = (12,6))
plt.subplot(1,2,1)
plt.imshow(imconv2dout_im[0],plt.cm.gray)
plt.axis("off")
plt.subplot(1,2,2)
plt.imshow(imconv2dout_im[1],plt.cm.gray)
plt.axis("off")
plt.show()

 

  • Figure fig = plt.figure(): 可以解释为画布。
    • 画图的第一件事,就是创建一个画布figure,然后在这个画布上加各种元素。
  • Axes ax = fig.add_subplot(1,1,1): 不想定义,没法定义,就叫他axes!
    • 首先,这个不是你画图的xy坐标抽!
    • 希望当初写这个lib的时候他们用一个更好的名字。。。
    • 可以把axes理解为你要放到画布上的各个物体。比如你要画一个太阳,一个房子,一个车在画布上,那么太阳是一个axes,房子是一个axes,etc。
    • 如果你的figure只有一张图,那么你只有一个axes。如果你的figure有subplot,那么每一个subplot就是一个axes
    • axes是matlibplot的宇宙中心!axes下可以修改编辑的变量非常多,基本上能包含你的所有需求。
  • Axis ax.xaxis/ax.yaxis: 对,这才是你的xy坐标轴。
    • 每个坐标轴实际上也是由竖线和数字组成的,每一个竖线其实也是一个axis的subplot,因此ax.xaxis也存在axes这个对象。对这个axes进行编辑就会修改xaxis图像上的表现。

 

 

 

opencv图像通道的拆分

cv2.split()将三通道的BGR彩色图像分离成B\G\R单通道图像

使用NumPy切片分离通道更简单

 

 

 

    # 1.6 图像的显示(cv2.imshow)
    imgFile = "../images/imgLena.tif"  # 读取文件的路径
    img1 = cv2.imread(imgFile, flags=1)  # flags=1 读取彩色图像(BGR)
    img2 = cv2.imread(imgFile, flags=0)  # flags=0 读取为灰度图像
    
    cv2.imshow("Demo1", img1)  # 在窗口 "Demo1" 显示图像 img1
    cv2.imshow("Demo2", img2)  # 在窗口 "Demo2" 显示图像 img2
    key = cv2.waitKey(0)  # 等待按键命令, 1000ms 后自动关闭

 

 

    # 1.8 图像显示(多个图像组合显示)
    imgFile1 = "../images/imgLena.tif"  # 读取文件的路径
    img1 = cv2.imread(imgFile1, flags=1)  # flags=1 读取彩色图像(BGR)
    imgFile2 = "../images/imgGaia.tif"  # 读取文件的路径
    img2 = cv2.imread(imgFile2, flags=1)  # # flags=1 读取彩色图像(BGR)

    imgStack = np.hstack((img1, img2))  # 相同大小图像水平拼接
    cv2.imshow("Demo4", imgStack)  # 在窗口 "Demo4" 显示图像 imgStack
    key = cv2.waitKey(0)  # 等待按键命令, 1000ms 后自动关闭

 

标签:plt,img,axes,cv2,笔记,学习,图像,cv
From: https://www.cnblogs.com/ChLi190429/p/17721695.html

相关文章

  • Markdown学习
    Markdown学习标题三级标题四级标题 字体Hello,World!Hello,World!Hello,World!Hello,World! 引用现在狂神说Java,走向人生巅峰 分割线 图片 超链接点击跳转到b站 列表abcdefg abc 表格名字性别生日......
  • 中医学习记录0-阴阳五行
    中医学习记录0-阴阳五行 无极-太极-两仪-四象-八卦 两仪:阴、阳四象:少阴、太阴、少阳、太阳八卦:乾-天、坤-地、震-雷、巽(xùn)-风、坎-水、离-火、艮(gèn)-山、兑-泽  参考资料:21张图搞清楚真正标准完整的先天八卦太极图,含太极图画法太极、两仪、四象与八卦......
  • HBASE shell学习
    一、基本命令打开HbaseShell:#hbaseshell1.1获取帮助#获取帮助help#获取命令的详细信息help'status'1.2查看服务器状态status1.3查看版本信息version关于表的操作2.1查看所有表list2.2创建表命令格式:create'表名称','列族名称1','列族名称2','列名称N'#创建......
  • 学习C语言的第八天
    今天没有学新内容,把前两天的代码又回味了下,发现有几个还是算不上理解,只能说是背住了,不知道有没有大佬会看到我写的东西,如果看到了,能不能告诉我一下,像一些不容易理解的代码,我背住它有用吗?写一个代码让电脑关机#include<windows.h>#include<stdio.h>#include<string.h>intmain()......
  • vue学习问题解决
    报错errorComponentname"Index"shouldalwaysbemulti-wordvue/multi-word-component-names解决方法1、问题说明:在创建组件命名时,引用index.vue的过程中报错;2、报错的原因及分析:其一、报错的全称为:errorComponentname"index"shouldalwaysbemulti-wordvue/multi-w......
  • 机器学习初学与复习最佳教材—机器学习实战
    https://book.douban.com/subject/35218199/半年多几乎没碰机器学习,都快忘光了,虽然可能以后不做这方面研究,但作为实用小工具或者说基本技能来说还是很不错的!这本书的课后习题还可以用来复习概念。所以就有空整理一下里面的概念啦。《机器学习实战:基于Scikit-Learn、Keras和Tenso......
  • 标记永久化学习笔记
    标记永久化是线段树的另一种写法,顾名思义,就是让懒标记永久作用于结点上不下传。回顾一下下传标记的写法。对于一个结点,懒标记作用于其管辖的范围。换句话说,其所有子孙结点都会被懒标记作用恰好一次。在进入下一层时,我们先将懒标记作用于其儿子,然后再将懒标记和其儿子的懒标记合并......
  • [算法学习笔记] 浅谈二路归并&双指针&归并排序
    二路归并·双指针是一种优化思想。它可以在\(O(n)\)的复杂度下把两个长度为\(n\)的有序数组合并为一个有序数组。它的具体处理方法如下:定义两个长度为\(n\)的升序数组\(a,b\)。,合并完后长度为\(2n\)的数组\(c\),初始化两个指针\(x=y=1\)(这里数组下标从\(1\)开始)......
  • 系统分析师学习笔记(17) PV操作
    1.PV操作是与活动的前驱与后继相关的。P操作-前驱活动,-1;V操作-后继活动,+1;2.做题时,一个活动,首先要将所有前驱活动的信号量进行P操作;在完成自己的操作后,需要对后继的所有活动进行V操作;3.做题时,不好判断信号量与活动的线是如何关联的,此时需要耐心的结合题意和填空的选项进行判断。......
  • python+playwright 学习-81 page.expect_request()捕获网络请求
    前言page.expect_request()可以捕获网页上发出去的请求,当有多个请求时,可以根据请求url,请求方式判断。expect_request官方文档示例withpage.expect_request("http://example.com/resource")asfirst:page.get_by_text("triggerrequest").click()first_request=firs......