def inverse(image): dst=cv.bitwise_not(image) cv.imshow('reverse',dst) src=cv.imread('yiner.jpg') cv.namedWindow('before',cv.WINDOW_NORMAL) cv.imshow('before',src) t1=cv.getTickCount() inverse(src) t2=cv.getTickCount() time = (t2 - t1)*1000/cv.getTickFrequency() print('time:%s'%time) cv.waitKey(0) cv.destroyAllWindows()
一 讀取一張圖片,修改顏色通道后輸出
# -*- coding:GBK -*- import cv2 as cv import numpy as np def access_pixles(image): print(image.shape) height=image.shape[0] width=image.shape[1] channel=image.shape[2] print(f'width:{width},channel:{channel},height:{height}') #統一修改每個像素點的值 for row in range(height): for col in range(width): for c in range(channel): pv=image[row,col,c] image[row,col,c]=255-pv cv.imshow('修改后',image) src=cv.imread('./ym.jpeg') #cv.namedWindow("原來", cv.WINDOW_NORMAL) cv.imshow('修改前',src) #毫秒級別的計時函數,記錄了系統啟動以來的時間毫秒 t1=cv.getTickCount() access_pixles(src) t2=cv.getTickCount() #getTickFrequency用於返回CPU的頻率,就是每秒的計時周期數 time=(t2-t1)*1000/cv.getTickFrequency() print('time:%s'%time) cv.waitKey(0) cv.destroyAllWindows()
原圖:
修改后的圖片:
二 自制圖片
- 1 3通道圖片
代碼
import cv2 as cv import numpy as np def create_image(): img=np.zeros([400,400,3],np.uint8) #3個通道的像素值都為255 img[:,:,0]=np.ones([400,400])*255 img[:,:,1]=np.ones([400,400])*255 img[:,:,2]=np.ones([400,400])*255 cv.imshow('zizhi_pic',img) create_image() cv.waitKey(0) cv.destroyAllWindows()
- 單通道圖片
import cv2 as cv import numpy as np def create_image(): img = np.ones([400, 400, 1], np.uint8) img = img * 127 cv.imshow("one chan", img) create_image() cv.waitKey(0) cv.destroyAllWindows()
- 調用庫函數來實現像素取反