OpenCv学习总结

OpenCv图像基本操作

1、图片加载,灰度化,显示,保存。

import cv2
# 载入图片
img = cv2.imread("img/dog.jpg")
# 显示图片像素
h, w = img.shape[:2]
print("w:{} h:{}".format(w, h))
# 显示图片
cv2.imshow(winname="dog", mat=img)
# 等待图片的关闭
cv2.waitKey()

在这里插入图片描述

输出:
w:1024  h:726

灰度图

import cv2

# 载入图片
img = cv2.imread("img/dog.jpg")
# 生成灰色图片
imgGrey = cv2.imread("img/dog.jpg", 0)
# BGR->GRAY,与上面效果一样
#imGary = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示灰色图片
cv2.imshow(winname="DogGrey", mat=imgGrey)
# 等待图片的关闭
cv2.waitKey()
# 保存灰色图片
cv2.imwrite("Grey.jpg", imgGrey)


在这里插入图片描述
显示原图和灰度图

import cv2
import matplotlib.pyplot as plt

# 显示中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 载入图片
img = cv2.imread("img/dog.jpg")
# 分割b,g,r
b, g, r = cv2.split(img)
# 转为rgb显示模式
img_y = cv2.merge([r, g, b])
# 灰度转换
imgary = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示原图
# fig = plt.figure()
# 建立一个一行二列的网格,这是第一列
plt.subplot(1, 2, 1)
# 显示原图
plt.imshow(img_y)
plt.title(u'原图')
# 关闭坐标轴
plt.axis('off')
# 显示灰度化图像
# 建立一个一行二列的网格,这是第二列
plt.subplot(1, 2, 2)
plt.gray()
plt.imshow(imgary)
plt.title(u'灰度图')
plt.axis('off')
plt.show()

在这里插入图片描述

2、图像的压缩

import cv2
img = cv2.imread("img/dog.jpg")
img1 = cv2.imread("img/cat1.png")
# jpg格式的,IMWRITE_JPEG_QUALITY其表示的是图像的质量,用0-100的整数表示,默认为95
cv2.imwrite("./dog.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 10])
# png格式的从0到9,压缩级别越高,图像尺寸越小。默认级别为3
cv2.imwrite("./cat1.png", img1, [int(cv2.IMWRITE_PNG_COMPRESSION), 1])

在这里插入图片描述

3、窗口的创建与销毁

import cv2
# 载入图片
img = cv2.imread("img/dog.jpg")
# 建立窗口
cv2.namedWindow("img")
# 显示在窗口上
cv2.imshow("img", img)
cv2.waitKey()
# 销毁窗口
cv2.destroyAllWindows()

在这里插入图片描述
获取尺寸宽、高、通道数、像素个数、类型

import cv2
# WHC
img = cv2.imread("cat.jpg")
# WH
img_gary = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print("WHC:{},size:{},type:{}".format(img.shape, img.size, img.dtype))
print("WH:{},size:{},type:{}".format(img_gary.shape, img_gary.size, img_gary.dtype))
# out:WHC:(1021, 700, 3),size:2144100,type:uint8
# out:WH:(1021, 700),size:714700,type:uint8

4、图像三通道的分离与合并

ps:其实在楼上转灰度图的时候已经用到了切割和组合,opencv采用bgr而不是rgb的模式

# import cv2
img = cv2.imread("img/cat.jpg")
# 切割
b, g, r = cv2.split(img)
# rgb显示模式
img_bgr = cv2.merge([b, g, r])
cv2.imshow("b", b)
cv2.imshow("g", g)
cv2.imshow("r", r)
cv2.imshow("rgb", img_bgr)
cv2.waitKey()
cv2.destroyAllWindows()

5、图像缩放

# 图像的缩放
img = cv2.imread("cat.jpg")
print(img.shape[:2])
img_resize = cv2.resize(img, (600, 600))
print(img_resize.shape[:2])
cv2.imshow("img_size", img_resize)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值