Day1-opencv对图像的基本操作

一、图像的读取和存储

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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值