第一部门
略
第二部分
图像基本操作
#①读入文件并显示其像素值
import cv2
cv2.imread("image/Chrysanthemum.jpg",1)
image = cv2.imread("image/Chrysanthemum.jpg")
print(image)
#②读入文件并显示该图片
import cv2
cv2.imread("image/Chrysanthemum.jpg",1)
image = cv2.imread("image/Chrysanthemum.jpg")
cv2.imshow("flower",image)
cv2.waitKey()
#获取 彩色图像和灰度图像的属性
import cv2
image_Color = cv2.imread("image/Chrysanthemum.jpg") # 读取1.1.jpg
print("获取彩色图像的属性:")
print("shape =", image_Color.shape) # 打印彩色图像的(垂直像素,水平像素,通道数)
print("size =", image_Color.size) # 打印彩色图像包含的像素个数
print("dtype =", image_Color.dtype) # 打印彩色图像的数据类型
image_Gray = cv2.imread("1.1.jpg", 0) # 读取与1.1.jpg(彩色图像)对应的灰度图像
print("获取灰度图像的属性:")
print("shape =", image_Gray.shape) # 打印灰度图像的(垂直像素,水平像素)
print("size =", image_Gray.size) # 打印灰度图像包含的像素个数
print("dtype =", image_Gray.dtype) # 打印灰度图像的数据类型
#像素属性
import cv2
image = cv2.imread("image/Chrysanthemum.jpg") # 读取1.1.jpg
px = image[291, 218]
print(px)
blue=image[291,218,0]
green=image[291,218,1]
red=image[291,218,2]
print(blue,green,red)
rgb_image = cv2.imread("image/Desert.jpg")
cv2.imshow("2.1", rgb_image) # 显示图2.1
b, g, r = cv2.split(rgb_image) # 拆分图2.1中的通道
cv2.imshow("B", b) # 显示图2.1中的B通道图像
cv2.imshow("G", g) # 显示图2.1中的G通道图像
cv2.imshow("R", r) # 显示图2.1中的R通道图像
cv2.waitKey()
cv2.destroyAllWindows()
#修改像素值
import cv2
image = cv2.imread("image/Chrysanthemum.jpg") # 读取1.1.jpg
px = image[291, 218] #坐标 任意输入
print(px)
px = [255,255,255]
px=[0,0,0]
cv2.imshow("ww",image)
cv2.waitKey()
#修改某一区域内的所有像素值
import cv2
image = cv2.imread("image/Chrysanthemum.jpg")
print(image)
cv2.imshow("2.1", image) # 显示图2.1
for i in range(0, 768): # i表示横坐标,在区间[241, 291]内取值
for j in range(0, 1024): # j表示纵坐标,在区间[168, 218]内取值
image[i, j] = [0, 255, 255] # 把区域内的所有像素都修改为白色
cv2.imshow("fixed", image) # 显示修改图
cv2.waitKey()
cv2.destroyAllWindows() # 关闭所有的窗口时,销毁所有窗口
# 将图2.1从RGB色彩空间转换到GRAY色彩空间
import cv2
image = cv2.imread("image/Koala.jpg")
cv2.imshow("2.1", image) # 显示图2.1
gray_image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
gray_image2 = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
cv2.imshow("GRAY", gray_image) # 显示灰度图像
cv2.imshow("GRAY", gray_image2) # 显示HSV
cv2.waitKey()
cv2.destroyAllWindows()
#拆分RGB
import cv2
rgb_image = cv2.imread("image/Penguins.jpg")
cv2.imshow("2.1", rgb_image) # 显示图2.1
b, g, r = cv2.split(rgb_image) # 拆分图2.1中的通道
cv2.imshow("B", b) # 显示图2.1中的B通道图像
cv2.imshow("G", g) # 显示图2.1中的G通道图像
cv2.imshow("R", r) # 显示图2.1中的R通道图像
cv2.waitKey()
cv2.destroyAllWindows()
第三部分
傅里叶变换、逆变换及可视化-绘制纯色及条纹图像
#.....................................完成图像的傅里叶变换并可视化.................
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('image/img.png', 0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
fimg = np.log(np.abs(fshift))
plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original Fourier')
plt.axis('off')
plt.subplot(122), plt.imshow(fimg, 'gray'), plt.title('Fourier Fourier')
plt.axis('off')
plt.show()
#.........................绘制黑白相间图像, 练习画横条纹......................
import numpy as np
import cv2
width=800
height=600
img=np.zeros((width, height), np.uint8)
for i in range(0,width,40):
img[:,i:i+20]=255
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()
#..........................特殊图像傅里叶变换黑色图片白色矩形..............................
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('image/8517805.jpg', 0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
fimg = np.log(np.abs(fshift))
plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original')
plt.axis('off')
plt.subplot(122), plt.imshow(fimg, 'gray'), plt.title('Fourier')
plt.axis('off')
plt.show()
#.......................例3 将波纹图像和原图像叠加再做傅里叶变换........................
import numpy as np
import cv2
from matplotlib import pyplot as plt
import numpy as np
import cv2
width=1080
height=1920
img1=np.zeros((width, height), np.uint8)
for i in range(0,height,20):
img1[:,i:i+10]=120
print(img1)
img2 = cv2.imread('image/8517805.jpg', 0) #219*292
print(img2)
img = img1+