OpenCV-Python官方教程-03-图像基础操作(获取修改像数值、图像属性、图像通道拆分合并,扩边)

tech2025-09-27  21

获取修改像素值 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()

最新回复(0)