OpenCV学习笔记(1)——图像处理基础
- 蒙面西红柿
- 1,253
一:图像读取与显示
1.读取图像
#img = cv2.imread(文件名, [显示控制参数,可选])
img = cv2.imread(“demo.jpg”)
显示控制参数:
cv.IMREAD_UNCHANGED
cv.IMREAD_GRAYSCALE
cv.IMREAD_COLOR
2.显示图像
#window = cv2.imshow(窗口名,图像名)
cv2.imshow("demo",img)
3.持续时间
#retval = cv2.waitKey([delay])
cv2.waitKey(0)
delay < 0 等待键盘单击
delay > 0 等待delay的毫秒
delay = 0 无限等待
4.保存图像
#retval = cv2.imwrite(文件地址,文件名)
cv2.imwrite("./demo2.jpg", img)
5.关闭窗口释放内存
cv2.destroyAllWindows()
二:像素处理
1.读取像素
OpenCV
#返回值 = 图像(位置参数)
#灰度图像,返回灰度值
p = img[88, 142]
print(p)
#RGB图像,返回RGB值
blue = img[78, 125, 0]
print(blue)
green = img[78, 125, 1]
print(green)
red = img[78, 125, 2]
print(red)
p = img[78, 125]
print(p) #将返回三个值,B G R
Numpy
#返回值 = 图像.item(位置参数)
#灰度图像,返回灰度值
p = img.item(88, 142)
print(p)
#RGB图像,返回RGB值
blue = img.item(78, 125, 0)
print(blue)
green = img.item(78, 125, 1)
print(green)
red = img.item(78, 125, 2)
print(red)
p = img.item(78, 125)
print(p) #将返回三个值,B G R
2.修改像素
OpenCV
#像素 = 新值
#灰度图像
img[88, 99] = 255
#BGR图像
img[88, 99, 0] = 255
img[88, 99, 1] = 255
img[88, 99, 2] = 255
#或者
img[88, 99] = [255, 255, 255]
#大范围修改,100-150行,100-150列
img[100: 150, 100: 150] = [255, 255, 255]
Numpy
#图像名.itemset(位置,新值)
#灰度图像
img.itemset((88, 99), 255)
#BGR图像
img.itemset((88, 99, 0), 255)
img.itemset((88, 99, 1), 255)
img.itemset((88, 99, 2), 255)
3.获取图像属性
#调用shape函数,假设图像为512*512的RGB图像
import cv2
img = cv2.imread("demo.jpg")
print(img.shape)
##输出(512,512,3)
#调用size函数获取图像像素数目
print(img.size)
##输出786432(行*列*通道数)
#调用dtype函数,返回图像的数据类型(每一个像素点的数据类型)
print(img.dtype)
##输出uint8
三:感兴趣区域ROI
import cv2
import numpy as np
img = cv2.imread("demo.jpg")
face = np.ones((101,101,3)) #使用numpy创建一个101行101列的RGB图像,默认为1
cv2.imshow("demo", img)
face = img[220:400, 250:350] #截取img中的一部分
img[0:180, 0:100] = face #将截取出来的face放在了原图的左上角,操作时注意size
cv2.imshow("demo", img)
cv2.waitKey()
cv2.destroyAllWindows()
四:通道拆分与合并
#BGR图像的拆分
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]
#或者
b, g, r = cv2.split(img)
#或者
b = cv2.split(img)[0]
#BGR通道的合并
newImage = cv2.merge([b, g, r]) #注意顺序
#根据img创建一个全0通道,为b
rows, cols, chn = img.shape
b = np.zeros((rows, cols), dtype = img.dtype)
文章评论