- 获取修改像素值
import cv2
import numpy as np
img = cv2.imread('x.png')
px = img[100,100]
print (px)
blue = img[100,100,0]
print (blue)
px = [255,255,255]
print (px)
#修改一块区域
roi = img[250:300,250:300]
img[50:100,50:100] = roi
cv2.imshow('11',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
[ 82 153 210]
82
[255, 255, 255]
还有一种办法,速度更优,利用numpy中的array.item()获取像素点,array.itemset()修改像素值
print (img.item(10,10,2))
img.itemset((10,10,2),90)
print (img.item(10,10,2))
100
90
- 获取图像属性(行,列,通道,图像数据类型,像素数目)
print (img.shape)
print (img.size)
print (img.dtype)
(319, 319, 3)
305283
uint8
- 图像通道拆分与合并
#方式一:代码简单但是速度慢,复杂度高
b,g,r = cv2.split(img)
img2 = cv2.merge((r,g,b))
#方式二:
b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]
- 图像扩边(填充)
利用函数cv2.copyMakeBorder(param1,param2,param3,param4,param5,param6),param1是输入的图像,2,3,4,5是top,bottom,left,right需要填充多少像素值,param6是填充方式。
blue = [255,0,0]
replicate = cv2.copyMakeBorder(img,20,20,20,20,cv2.BORDER_CONSTANT,value = blue)
cv2.imshow('11',replicate)
cv2.waitKey(0)
cv2.destroyAllWindows()