图像数据预处理——openCV

目录

灰度化

几何变换

 图像缩放

 中心裁剪

 标准化

图像增强

可视化图像


import numpy as np 
import pandas as pd 
import json
import cv2
import os

 

灰度化

 使用cv2读取图像时,就可以选择读取彩色图像还是灰度图像

image = cv2.imread(filename, flags)

     flags:cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED

  • cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可用1作为实参替代
  • cv2.IMREAD_GRAYSCALE:读入灰度图片,可用0作为实参替代
  • cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道,可用-1作为实参替代

单通道读取图片:

def img_processor(data_path):
    image_src = cv2.imread(data_path,flag = cv2.IMREAD_GRAYSCALE)

 

几何变换

 图像缩放

image = cv2.resize( x, y ) 

 将图像大小调整为 (256, 256)

def img_processor(data_path):
    image_src = cv2.imread(data_path,flag = cv2.IMREAD_GRAYSCALE)
    // 调整图像大小为(256,256)
    image_resized = cv2.resize(image_src, (256,256)) 

 

 中心裁剪

image = image [y0 : y1, x0 : x1] 

其中,y0,x0 是初始索引位置 ,y1,x1 是对角索引位置。

将图片中心剪裁为(224,224)的大小,返回起始索引位置和图片:

def img_processor(data_path,dst_size=(224,224):
    image_src = cv2.imread(data_path,flag = cv2.IMREAD_GRAYSCALE)
    image = cv2.resize(image_src, (256,256)) // 图像大小为(256,256)

    // 计算初始索引位置
    startx = (256,dst_size[0]) // 2
    starty = (256,dst_size[1]) // 2
    // 剪裁
    image = image[starty:starty+dst_size[0],startx:startx+dst_size[1]]

 

 标准化

image = (image - mean)/std 

def img_processor(data_path,dst_size=(224,224):
    image_src = cv2.imread(data_path,flag = cv2.IMREAD_GRAYSCALE)

    // 标准化,使用代码中设置的 _mean 和 _std 对图像像素进行标准化。
    Image_std = [0.229, 0.224, 0.225]
    Image_mean = [0.485, 0.456, 0.406]
    _std = np.array(Image_std).reshape((1,1,3))
    _mean = np.array(Image_mean).reshape((1,1,3))

    image_standar = (image_src-_mean) / _std

 

图像增强

cv2.convertScaleAbs是OpenCV中用于对图像进行线性缩放和偏移的函数 。

dst = cv2.convertScaleAbs(src, alpha=alpha, beta=beta)  

#输出图像与输入图像具有相同的大小和类型。

alpha用于调整对比度,beta用于调整亮度。cv2.convertScaleAbs函数用于对图像进行缩放和偏移,从而实现对比度增强和亮度调整

def enhance_contrast_brightness(image, alpha=1.0, beta=0):
    # 对比度增强和亮度调整
    enhanced_image = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)
    return enhanced_image

可视化图像

# 显示原始图像和增强后的图像

cv2.imshow("Image", image)

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二值化是图像处理中常用的一种方法,它将一幅图像按照一定的阈值分成黑白两部分,可以用于图像增强、特征提取等方面。下面我将介绍如何用C++实现二值化并给出一个简单的案例。 二值化的实现流程如下: 1. 读入一幅灰度图像; 2. 选择阈值; 3. 将图像中每个像素的灰度值与阈值进行比较; 4. 如果像素的灰度值大于阈值,则将像素设为255(白色),否则设为0(黑色); 5. 输出处理后的二值图像。 下面是代码实现: ```c++ #include <iostream> #include <fstream> #include <string> using namespace std; int main() { // 读入灰度图像 ifstream fin("grayImg.txt"); int row, col; fin >> row >> col; int img[row][col]; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { fin >> img[i][j]; } } fin.close(); // 选择阈值 int threshold = 127; // 二值化 int binImg[row][col]; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { if (img[i][j] > threshold) { binImg[i][j] = 255; } else { binImg[i][j] = 0; } } } // 输出二值图像 ofstream fout("binImg.txt"); fout << row << " " << col << endl; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { fout << binImg[i][j] << " "; } fout << endl; } fout.close(); return 0; } ``` 上述代码中,我们读入了一个灰度图像(格式为txt文件),然后选择了一个阈值127进行二值化处理,最后输出了处理后的二值图像。下面是一个简单的案例,我们将一张灰度图像二值化并输出: 原图像: ![grayImg](https://img-blog.csdn.net/20180315232758669?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdzZ2h1Zw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75) 二值图像: ![binImg](https://img-blog.csdn.net/20180315232952856?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdzZ2h1Zw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值