1.修改颜色通道输出图片。
#Numpy数组操作
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]#通道数:3
print("width:%s,height:%s,channels:%s"%(width,height,channels))
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)
print("----------------------------")
str="D:/pycode/test.jpg"
img=cv.imread(str,1)#读取图像
cv.namedWindow("Input iamge",cv.WINDOW_NORMAL)
# cv.resizeWindow("Input image",150,300)
cv.imshow("Input image",img)#显示图像,第一个参数为显示时的标题,第二个为读取的图像名称
t1=cv.getTickCount()#获取当前CPU 转的圈数
access_pixels(img)
t2=cv.getTickCount()
print("time:%s ms"%((t2-t1)/cv.getTickFrequency()))#cv.getTickFrequency()获取每一毫秒走多少,两者相除即为多少毫秒
cv.waitKey(0)
cv.destroyAllWindows()
运行结果:
2.创建图片
#Numpy数组操作
import cv2 as cv
import numpy as np
# 利用zeros和ones创建图片(one:全1矩阵。zeros:全0矩阵)
def create_image1():
img=np.zeros([400,400,3],np.uint8)#img=np.zeros([400,400,1],np.uint8)是定义一张单通道图片
# 将img的三个通道全部设为255,即白色图片
img[:,:,0]=np.ones([400,400])*255#400*400的图片的第一维赋值255
img[:,:,1]=np.ones([400,400])*255#第二维全部设置为255
img[:,:,2]=np.ones([400,400])*255#第三维全是255
cv.imshow("img1",img)
print("----------------------------")
str="D:/pycode/test.jpg"
create_image1()
cv.waitKey(0)
cv.destroyAllWindows()
结果:出现一张尺寸按规定的白色图片。
3.bitwise_not()像素取反
# 调用库函数实现像素取反
import cv2 as cv
import numpy as np
def inverse(image):
dst=cv.bitwise_not(image)
cv.imshow("later",dst)
str="D:/pycode/test.jpg"
src=cv.imread(str)
cv.imshow("before",src)
t1=cv.getTickCount()
inverse(src)
t2=cv.getTickCount()
print("耗时:%s"%((t2-t1)/cv.getTickFrequency()))#输出时间
cv.waitKey(0)
cv.destroyAllWindows()