Python 使用Opencv读写图片(Opencv教程一)

----------欢迎加入学习交流QQ群:657341423


基础概念:图像通道图像深度RGB模式


#*********************************
# 读写图像文件
import cv2
# cv2.imread 读取图片
# 参数cv2.IMREAD_GRAYSCALE 将图片生成灰度图像,将图像转化为单通道(8位灰度)
# 参数cv2.IMREAD_ANYCOLOR 和 cv2.IMREAD_UNCHANGED 保留图片原有颜色
# cv2.IMREAD_ANYDEPTH 将保持图像原来的深度
# cv2.IMREAD_COLOR 将图像转化为三通道(彩色)(默认参数)
# 此外还有多种图片读取模式,无论哪种模式,imread函数都会删除所有alpha通道信息
# alpha通道说明:https://baike.baidu.com/item/alpha%E9%80%9A%E9%81%93/3163191?fr=aladdin
img = cv2.imread('img.png', cv2.IMREAD_COLOR)
# imwrite函数图像必须为BGR或灰度格式。
cv2.imwrite('myimg.jpg',img)

#*********************************
# 图像与字节之间转换
import cv2,numpy,os
# rb是随机生成120000个字节数
rb = bytearray(os.urandom(120000))
# 将字节数转换成Numpy数值
fa = numpy.array(rb)

# 将数组生成300*400的图像
gimg = fa.reshape(300,400)
# 保存并生成灰度图像
cv2.imwrite('ging.png',gimg)

# 将数组生成3通道、大小为100*400的图像
bimg = fa.reshape(100,400,3)
# 保存并生成彩色图像
cv2.imwrite('bimg.png',bimg)

import cv2
img = cv2.imread('img.png', cv2.IMREAD_GRAYSCALE)
# *********像素操作***********
# img是灰度图像,因此是单通道,img[0,0]是设置图像0*0的像素颜色值
img[0,0] = 0
# imgC是三通道彩色图像,BGR格式。
imgC = cv2.imread('img.png')
# imgC[0,0]是设置图像0*0的像素颜色,[0,0,1]依次是BGR通道的像素颜色值
imgC[0,0] = [0,0,1]
# 设置G通道的0*0像素的颜色值为0
imgC[0,0,1] = 0

# 单独读取某一通道的某个像素颜色
# 读取B通道的110*110像素,0代表通道B
imgC.item(110,110,0)
# 单独设置某一通道的某个像素颜色
# 设置B通道的110*110像素颜色值为255
imgC.itemset((110,110,0),255)

# *********通道操作***********
# 将B通道的颜色值设置为0
imgC[:,:,0] = 0

# 图像区域移动,原理将某区域的像素赋值给新区域的像素,两个区域的像素范围大小要一致
roi = imgC[0:100, 0:100]
imgC[150:250, 150:250] = roi
cv2.imwrite('a.png',imgC)
print('a')

# ******获取图片信息*******
print(imgC.shape) # 图像的宽度、高度和通道数
print(imgC.size) # 图像的像素大小
print(imgC.dtype) # 图像的数据类型

显示图像

import cv2
img = cv2.imread('img.png')
# 函数 imshow显示图像,但随即消失
cv2.imshow('MyPic', img)
# 函数waitKey是等待用户按键触发,函数参数是等待时间,单位时间为ms
cv2.waitKey()
# 函数destroyAllWindows是释放opencv创建的窗口
cv2.destroyAllWindows()

参考资料:OpenCV 3计算机视觉 Python语言实现第二版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xy-Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值