OpenCV(基于python)学习笔记之图片I/O
使用numpy访问图像数据
修改图像中某一点的像素值
import cv2
import numpy as np
img = cv2.imread('image/logo.png')
print(img.item(150,120,0))
#显示蓝色通道150,120处像素的值
img.itemset((150,120,0),255)
print(img.item(150,120,0))
#显示蓝色通道150,120处修改后像素的值
批量修改图片中的像素值
我们可以使用索引批量修改图片中的像素值,以下代码为为将G通道中所有的像素值变为0(在此之前需要import cv2和numpy)
img[:,:,1] = 0
我们可以使用这个功能做出一些很有意思的事情,比如找出我们感兴趣的区域:
my_roi = img[0:100,0:100]
也可以将一个图片覆盖到另一个图片之上
img[200:300,200:300] = my_roi
获取图片的属性
我们可以使用以下代码来获取图片的属性,以512*512的彩色图片为例:
print(img.shape)
#显示图片的长宽和通道数,对于本例为(512,512,3),若果是灰度图像,则会返回一个二维数组,即长和宽
print(img.size)
#返回像素数目,即长*宽*通道数,对于本例为786432
print(img.dtype)
#返回图像的数据类型,一般为uint8
在窗口显示图像
"""
在窗口显示图像
"""
import cv2
import numpy as np
img = cv2.imread('image/logo.png')
cv2.imshow('my image',img)
cv2.waitKey()
cv2.destroyAllWindows()
#destroyAllWindows()用于在程序结束后释放所有窗口