import cv2 ## 导入OpenCV库
cv2.imread(filename,[flags])
img_ty = cv2.imread('ty.jpg',1) ## 加载图片名称为ty.jpg的彩色图片
import cv2
img_ty = cv2.imread('ty.jpy')
## 输出图片的形状
print(img_ty.shape) ## 输出ty.jpg图片的大小
##Out[1]: (854, 740, 3)
print(img_ty.size)
##Out[2]: 1895880
print(img_ty.dtype)
##Out[3]: uint8
## 1.切片
pixel = img[100,100] ## 获取(100,100)处的像素值
print(pixel)
##Out[1]: [ 70 176 230]
b = img_ty[100,100,0] ## 获取(100,100)处,blue通道像素值
print(b)
##Out[2]: 70
## 2.item
r = img_ty.item(100,100,2)
print(r)
##Out[3]: 230
## 1.切片
img_ty[100,100,2] = 99 ## 设置red通道值
print(img_ty[100,100])
##Out[1]: [ 70 176 99]
## 2.itemset
img_ty.itemset((100,100,1),99)
print(img_ty[100,100])
##Out[2]: [ 70 99 99]
## 1.通道截取
b = img_ty[:,:,0] #截取整个蓝色通道
b,g,r = cv2.split(img) ## 截取三个通道,比较耗时
img = cv2.merge((b,g,r)) ## 通道合并
## 2.区域截取
roi = img[100:200,300:400] ## 截取100行到200行,列为300到400列的整块区域
img[50:150,200:300] = roi ## 将截取的roi移动到该区域 (50到100行,200到300列)
第一个参数表示输出窗口的窗口名称,第二个参数表示要显示的图像。
注:可以创建任意数量的窗口,但必须使用不同的窗口名称。
cv2.destroyAllWindows() 用来删除所有窗口
cv2.destroyWindow(winname):删除特定的窗口
cv2.imshow('ty',img_ty) ## 在一个名为ty的窗口显示图片ty.jpg
cv2.waitKey(0) ## 让窗口持续显示
cv2.destroyAllWindows() ## 删除窗口
## cv2.destroyWindow('ty')
cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
参数解释:
参数 | 解释 |
---|---|
InputArray src | 输入图片 |
OutputArray dst | 输出图片 |
Size | 输出图片尺寸**(宽,高)** |
fx, fy | 沿x轴,y轴的缩放系数 |
interpolation | 插入方式 |
interpolation 选项所用的插值方法:
插值方法 | 解释 |
---|---|
INTER_NEAREST | 最近邻插值 |
INTER_LINEAR | 双线性插值(默认设置) |
INTER_AREA | 使用像素区域关系进行重采样 |
INTER_CUBIC | 4x4像素邻域的双三次插值 |
INTER_LANCZOS4 | 8x8像素邻域的Lanczos插值 |
cv2.imwrite(img_path_name,img):第一个参数为保存的文件名,第二个参数为文件对象。
import cv2
img_ty = cv2.imread('ty.jpg',1)
## 将图片高和宽分别赋值给x,y
x,y = img_ty.shape[0:2]
## 如果输出空格则关闭ty1窗口
cv2.imshow('ty1',img_ty)
dt = cv2.waitKey(0)
if dt == 32:
cv2.destroyWindow('ty1')
## 缩放到原来的二分之一,输出尺寸格式为(宽,高)
img_ty2 = cv2.resize(img_ty, (int(y / 2), int(x / 2)))
cv2.imshow('ty2', img_ty2)
cv2.waitKey(0)
# 缩放到原来的四分之一
img_ty3 = cv2.resize(img_ty, (0, 0), fx=0.25, fy=0.25, interpolation=cv2.INTER_NEAREST)
cv2.imshow('ty3', img_ty3)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('ty_copy.jpg',img_ty)