import cv2 as cv
import numpy as np
def access_fixel(img):
'''访问图像的所有元素'''
print(img.shape)
# 获取图像的高度 图像的高度为shape的第一个值(维度)
height = img.shape[0]
# 获取图像的宽度 图像的宽度为shape的第二个值(维度)
weight = img.shape[1]
# 获取图像的通道数量 图像的通道数量为shape的第三个值(维度)
channels = img.shape[2]
for row in range(height):
for col in range(weight):
for c in range(channels):
pv = img[row,col,c]
img[row,col,c]=255-pv
cv.imshow("access_fixel ", img)
def create_image():
'''创建图像'''
#创建一张宽高都是400像素的3通道 8位图片
img = np.zeros([40,40,3],np.uint8)
cv.imshow("create zeros", img)
#修改对应通道号的值
img[:,:,0] = np.ones([40,40]) * 255
print("0 = ",img.shape)
cv.imshow("create ones 0 ", img)
img[:, :, 2] = np.ones([40, 40]) * 255
print("2 = ", img.shape)
cv.imshow("create ones 2 ", img)
#创建一个单通道的8位图片
img = np.zeros([40,40,1],np.uint8)
img = img * 127
cv.imshow("new image", img)
#创建一张名字是127img.png 的图片
cv.imwrite("127img.png",img)
#numpy 数组维度的转换
#定义一个二维数组
img = np.ones([4,4,1],np.uint8)
#填充每一个元素
img.fill(1000) #这里很疑惑为什么不是255 而是232
print("img = ",img)
#变换为一维数组
img = img.reshape(1,16)
print("reshape 1 img = ", img)
img = img.reshape(2, 8)
print("reshape 2 img = ", img)
src = cv.imread("/Users/reon/Code/Python/OpenCv/durrells.jpg")
cv.namedWindow("input pic",cv.WINDOW_AUTOSIZE)
cv.imshow("input pic",src)
#获取时钟总数
t1 = cv.getTickCount()
#access_fixel(src)
#初始化一个dst 0矩阵图像
dst = np.zeros([src.shape[0],src.shape[1],src.shape[2]],np.uint8)
#相当于access_fixel 但是,处理速度快多了。
cv.bitwise_not(src,dst)
cv.imshow("out not pic",dst)
t2 = cv.getTickCount()
#计算便利一张图片所花的所有时间
time=((t2-t1)/cv.getTickFrequency())
print("time = ",time)
create_image()
cv.waitKey(0)
cv.destroyAllWindows()
numpy的一些操作
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...