24位图像储存一个像素需要3个字节
print("一副1024*768的图像需要的字节数为:",1024*768*3)
一副1024*768的图像需要的字节数为: 2359296
import cv2 import numpy as np import matplotlib.pyplot as plt
img = cv2.imread("cameraman.tif",0) w,h = img.shape img2 = np.ones((w,h),dtype=np.uint8) level = 256-8 #目标灰度级 for i in range(w): for j in range(h): img2[i][j] =int(img[i][j]*level/256)*256/level plt.subplot(121) plt.title("before") plt.imshow(img,cmap="gray") plt.subplot(122) plt.title("after") plt.imshow(img2,cmap="gray") plt.show() print(img,"\n-----------------------\n",img2)
[[156 159 158 ... 151 152 152] [160 154 157 ... 154 155 153] [156 159 158 ... 151 152 152] ... [114 132 123 ... 135 137 114] [121 126 130 ... 133 130 113] [121 126 130 ... 133 130 113]] ----------------------- [[155 158 157 ... 150 151 151] [160 153 156 ... 153 154 152] [155 158 157 ... 150 151 151] ... [113 131 122 ... 134 136 113] [120 125 129 ... 132 129 112] [120 125 129 ... 132 129 112]]
降低了8个灰度级从图片上看不出多大区别,从数值上能看出较小的变化
img = cv2.imread("misaka.jpg") img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)#BGR转RGB x,y,z = img.shape img2 = np.ones((x,y),dtype=np.uint8) for i in range(x): for j in range(y): img2[i][j] = 0.299*img[i][j][0]+0.587*img[i][j][1]+0.144*img[i][j][2] plt.subplot(121) plt.title("before") plt.imshow(img) plt.subplot(122) plt.title("after") plt.imshow(img2,cmap="gray") plt.show()
r,g,b = cv2.split(img) #使用上一题图片 img_exg = cv2.merge([r,b,g]) #切换b,g位置后合并 plt.subplot(121) plt.title("before") plt.imshow(img) plt.subplot(122) plt.imshow(img_exg) plt.title("after") plt.show()
求其二维傅里叶变换,并绘制其频谱图。
f = [[0,1,0,2],[0,3,0,4],[0,5,0,6],[0,7,0,8]] f = np.float32(f) f_dft = cv2.dft(f) plt.subplot(121) plt.title("spatial") plt.imshow(f,"gray") plt.subplot(122) plt.title("frequency") plt.imshow(f_dft,cmap="gray") plt.show()