从文件加载图像
支持格式如下:
import cv2
print(cv2.__version__)
# 加载灰度图
img = cv2.imread('lena.jpg', 0)
其余的自己可以翻译去看
调用举例
import cv2
print(cv2.__version__)
# 加载灰度图
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
参数1 窗口名
参数2 图片Mat对象
import cv2
print(cv2.__version__)
# 加载灰度图
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
# 使用cv2.imshow()显示图片,窗口会自适应图片的大小
cv2.imshow('lena', img)
cv2.waitKey(0)
cv2.imwrite('lena_gray.jpg', img)
import cv2
print(cv2.__version__)
# 加载灰度图
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
#定义窗口
cv2.namedWindow('lena2', cv2.WINDOW_NORMAL)
# 显示窗口
cv2.imshow('lena2', img)
cv2.waitKey(0)
可传入参数介绍
WINDOW_NORMAL或WINDOW_AUTOSIZE:WINDOW_NORMAL允许您调整窗口大小,而WINDOW_AUTOSIZE则自动调整窗口大小以适合显示的图像(请参见imshow),并且您不能手动更改窗口大小。
WINDOW_FREERATIO或WINDOW_KEEPRATIO:WINDOW_FREERATIO调整图像时不考虑其比率,而WINDOW_KEEPRATIO保持图像比率。
WINDOW_GUI_NORMAL或WINDOW_GUI_EXPANDED:WINDOW_GUI_NORMAL是在没有状态栏和工具栏的情况下绘制窗口的旧方法,而WINDOW_GUI_EXPANDED是一种新的增强型GUI。默认情况下,flags==WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED
import cv2
img = cv2.imread('lena.jpg')
#取坐标下的像素点
px = img[100, 90]
print(px) # [163 184 205]
# 只获取蓝色blue通道的值
px_blue = img[100, 90, 0]
print(px_blue) # 163
#高性能方式 BGR
print(img.item(100,90,0))
img[100, 90] = [255, 255, 255]
import cv2
img = cv2.imread('lena.jpg')
print(img.shape) # (263, 247, 3)
# 形状中包括行数、列数和通道数
height, width, channels = img.shape
print(img.dtype)
print(img.size)
感兴趣区域
import cv2
img = cv2.imread('lena.jpg')
# 截取脸部ROI
face = img[100:200, 115:188]
cv2.imshow('face', face)
cv2.waitKey(0)
通道分割与合并
彩色图的BGR三个通道是可以分开单独访问的,也可以将单独的三个通道合并成一副图像。分别使用cv2.split()和cv2.merge():
import cv2
img = cv2.imread('lena.jpg')
b, g, r = cv2.split(img)
cv2.imshow('lena-b', b)
cv2.imshow('lena-g', g)
cv2.imshow('lena-r', r)
img = cv2.merge((b, g, r))
cv2.imshow('lena-rgb', img)
cv2.waitKey(0)
split()函数比较耗时,更高效的方式是用numpy中的索引,如提取B通道:·
import cv2
img = cv2.imread('lena.jpg')
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]
cv2.imshow('b', b)
cv2.imshow('g', g)
cv2.imshow('r', r)
cv2.waitKey(0)