一、图像的读取和存储
import numpy as np
import cv2
import os
path = 'read_images/'#图片存放的文件夹路径
for root,dir,files in os.walk(path):#依次读取文件夹下图像
for file in files:
img = cv2.imread(path+str(file))#读入一幅图像
cv2.imwrite('new_images/'+str(file),img)#将图像存储到另一个文件夹下
二、图像的放缩、裁剪、分辨率调整
import numpy as np
import cv2
#使用resize方法实现图像放缩
img = cv2.imread('read_images/1.JPG')
h,w = img.shape[:2]
res1 = cv2.resize(img,(2*w,2*h))
res2 = cv2.resize(img,(w//2,h//2))
cv2.imshow('img',img)
cv2.imshow('res1',res1)
cv2.imshow('res2',res2)
cv2.waitKey(0)
cv2.destroyAllWindows()
#使用crop方法实现图像裁剪
def crop_image(size):
path = 'read_images/1.JPG'#要裁剪图像位置
output_path = 'crop_image/'#裁剪之后图像存放的文件夹
img = cv2.imread(path)
h,w = img.shape[:2]
h_num = h//size
w_num = w//size
for row in range(h_num):
for col in range(w_num):
crop_img = img[size*row:size*(row+1),size*col:size*(col+1),:]
cv2.imshow('img_'+f'{row}_{col}',crop_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite(output_path+f'crop_{row}_{col}'+'.JPG',crop_img)
#调用方法,裁剪图像
crop_image(227)
#实现图像分辨率调整
img = cv2.imread('read_images/1.JPG')
num = np.zeros(img.shape,img.dtype)+100
img1 = cv2.add(img,num)
img2 = cv2.subtract(img,num)
cv2.imshow('img',img)
cv2.imshow('img1',img1)
cv2.imshow('img2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、图像直方图特征提取和可视化
import numpy as np
import cv2
import matplotlib.pyplot as plt
#提取灰度直方图信息及可视化
def grey_hist(path):
img = cv2.imread(path,0)
h = cv2.calcHist([img],[0],None,[256],[0,256])
plt.hist(img.ravel(),256,[0,256])
plt.show()
#提取BGR图像直方图信息
def BGR_hist(path):
img = cv2.imread(path)
colors = ['b','g','r']
for i ,col in enumerate(colors):
hist = cv2.calcHist([img],[i],None,[256],[0,256])
plt.plot(hist,color=col)
plt.xlim([0,256])
plt.show()
path = 'read_images/1.JPG'
grey_hist(path)
BGR_hist(path)
#直方图均衡化
def equalize_hist(path):
img = cv2.imread(path,0)
equ = cv2.equalizeHist(img)
res = np.hstack((img,equ))
plt.hist(res.ravel(),256,[0,256])
plt.show()
equalize_hist(path)