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()
上一篇下一篇

猜你喜欢

热点阅读