import cv2 as cv import numpy as np image=cv.imread("pic.png") h=np.shape(image)[0] w=np.shape(image)[1] gray_img=np.zeros((h,w,3),np.uint8) for i inrange(h): for j inrange(w): gray_img[i,j]=0.3*image[i,j][0]+0.59*image[i,j][1]+0.11*image[i,j][2] cv.imshow("src",image) cv.imshow("gray",gray_img) cv.waitKey(0) cv.destroyAllWindows()
最大法实现
1 2 3 4 5 6 7 8 9 10 11 12 13
import cv2 as cv import numpy as np image=cv.imread("pic.png") h=np.shape(image)[0] w=np.shape(image)[1] gray_img=np.zeros((h,w,3),np.uint8) for i inrange(h): for j inrange(w): gray_img[i,j]=max(image[i,j][0],image[i,j][1],image[i,j][2]) cv.imshow("src",image) cv.imshow("gray",gray_img) cv.waitKey(0) cv.destroyAllWindows()
平均法实现
1 2 3 4 5 6 7 8 9 10 11 12 13
import cv2 as cv import numpy as np image=cv.imread("pic.png") h=np.shape(image)[0] w=np.shape(image)[1] gray_img=np.zeros((h,w,3),np.uint8) for i inrange(h): for j inrange(w): gray_img[i,j]=(image[i,j][0]+image[i,j][1]+image[i,j][2])/3 cv.imshow("src",image) cv.imshow("gray",gray_img) cv.waitKey(0) cv.destroyAllWindows()
灰度线性变换
1 2 3 4 5 6 7 8 9 10 11
import cv2 as cv import numpy as np img=cv.imread("pic.png") out=1.8*img out[out>255]=255 out=np.around(out) out=out.astype(np.uint8) cv.imshow("img",img) cv.imshow("out",out) cv.waitKey(0) cv.destroyAllWindows()