Core-L01-基本图像操作
2019-06-14 本文已影响0人
全栈顾问
目标
获得像素值并修改;
获得图像的属性;
设置兴趣区(ROI);
分割合并图像。
获取并修改像素值
import cv2
import numpy as np
img = cv2.imread('01.jpeg')
px = img[100, 100]
print(px)
blue = img[100, 100, 0]
print(blue)
img[100,100] = [255,255,255]
print(img[100,100])
获取图像的属性
print(img.shape)
print(img.size)
print(img.dtype)
图像ROI
有时候,我们必须处理图像的某个区域。例如要进行眼睛检测,首先要在整个图片中检测人脸区域,然后再在这些区域中检测眼睛,这既提高了准确率也提高了性能。
bus = img[280:340, 330:390]
img[273:333, 100:160] = bus
切分、合并图像通道(BGR)
有时候,我们需要单独的处理图像的BGR通道。需要按通道将图像拆分成不同的图像,或者把不同通道的图像进行合并。
b,g,r = cv.split(img)
img = cv.merge((b,g,r))
或者
b = img[:,:,0]
img[:,:,2] = 0
完整的代码
# coding: utf-8
import cv2
import numpy as np
img = cv2.imread('01.jpeg')
# 读取一个像素
px = img[100, 100]
print(px)
# 读取一个项目的一个通道
blue = img[100, 100, 0]
print(blue)
# 修改一个像素
img[100, 100] = [255, 255, 255]
print(img[100, 100])
# 图像的属性信息
print(img.shape)
print(img.size)
print(img.dtype)
# ROI [height1:height2, width1:width2]
bus = img[1050:1400, 200:700]
img[1450:1800, 200:700] = bus
cv2.imshow('image', img)
cv2.waitKey(0)
# 拆分图像的通道
b, g, r = cv2.split(img)
cv2.imshow('image-b', b)
cv2.waitKey(0)
cv2.imshow('image-g', g)
cv2.waitKey(0)
cv2.imshow('image-r', r)
cv2.waitKey(0)
cv2.destroyAllWindows()