代码
import cv2 as cv
import numpy as np
def access_pixels(image):
print(image.shape)
height=image.shape[0]
width=image.shape[1]
# 管道数
channels=image.shape[2]
print("height:%s width:%s channels:%s "%(height,width,channels))
# range默认从0开始,到height
for row in range(height):
for col in range(width):
for c in range(channels):
# 一个三维数组
pv=image[row,col,c]
image[row,col,c]=255-pv
cv.imshow("pixels_demo",image)
def create_image():
#三维多通道
# 创建一个全0数组
img=np.zeros([400,400,3],np.uint8)
# 第一通道改变,变为蓝色
# 255代表白色,0代表黑色
img[:,:,0]=np.ones([400,400])*255
# 第二通道改变,变为绿色
img[:, :, 1] = np.ones([400, 400]) * 255
# 第三通道改变,变为红色
img[:, :, 2] = np.ones([400, 400]) * 255
#cv.imshow("image",img)
#三维单通道
img=np.zeros([400,400,1],np.uint8)
# 127代表灰色
img[:,:,0]=np.ones([400,400])*127
# 上面两式可以简写成
#img=np.ones([400,400,1],np.uint8)
#img=img*127
cv.imshow("image", img)
#二维
m1=np.ones([3,3],np.uint8)
m1.fill(12222.388)
print(m1)
#一维
#通过reshape,将二维变为一维
m2=m1.reshape([1,9])
print(m2)
#也可以直接创建一个数组
m3=np.array([2,3,4],[4,5,6],[7,8,9],np.uint32)
m3.fill(9)
print(m3)
src = cv.imread("C:/Users/Administrator/Desktop/demo.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
# CPU到当前所转的时间圈数
t1=cv.getTickCount()
create_image()
# access_pixels(src)
t2=cv.getTickCount()
# 圈数除以频率就是所用的时间。单位是ms,所以乘1000
print("time:%s ms"%(((t2-t1)/cv.getTickFrequency())*1000))
cv.waitKey(0)
cv.destroyAllWindows()
print("Hi,python!")
感觉代码注释都说的比较清楚了,没有什么补充的
上面的函数access_pixels(image),是一个取反色的函数,可以直接用另外一个函数inverse代替
def inverse(image):
dst=cv.bitwise_not(image)
cv.imshow("inverse demo",dst)
之后引用这个函数就可以了
inverse(src)