小工具知识网

当前位置: 首页 > 行业知识 > 基于OpenCV的图形分析辨认03

行业知识

基于OpenCV的图形分析辨认03

2026-11-08 19:58:09 来源:互联网转载

���录

一、前言

二、实验目的

三、实验内容

四、实验过程


一、前言

编程语言:Python,编程软件:vscode或pycharm,必备的第三方库:OpenCV,numpy,matplotlib,os等等。

关于OpenCV,numpy,matplotlib,os等第三方库的下载方式如下:

第一步,按住【Windows】和【R】调出运行界面,输入【cmd】,回车打开命令行。

第二步,输入以下安装命令(可以先升级一下pip指令)。

pip升级指令:

python -m pip install --upgrade pip

 opencv库的清华源下载:

pip install opencv-python  -i https://pypi.tuna.tsinghua.edu.cn/simple

numpy库的清华源下载:

 pip install numpy  -i https://pypi.tuna.tsinghua.edu.cn/simple

matplotlib库的清华源下载:

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

os库的清华源下载:

pip install os  -i https://pypi.tuna.tsinghua.edu.cn/simple 

二、实验目的

1.了解不同图像亮度变换算法;

2.基于演算法原理,以函数形式实现图像亮度变换;

3.根据实验内容2-4要求,调试出所提供图片对应的参数;

三、实验内容

1.任选一张彩色图完成课堂教授内容,并以函数形式封装功能,包含:

  1. Image Negatives
  2. Log Transformations
  3. Power-Law Transformations
  4. Piecewise-Linear Transformations
  5. Contrast Stretching
  6. Gray-Level Slicing
  7. Bit-Plane Slicing

2.透过gramma correction,尝试不同参数,将下图還原成原亮度。

3.透过gramma correction,尝试不同参数,将下图還原成原亮度。

4.透过Bit-Plane Slicing,尝试获得下图结果。

Hint:考虑移除细节部分

四、实验过程

根据原理写成一个代码文件,命名为【Methods】,具体代码如下:

import cv2import numpy as npdef Image_Negatives(img):    # 将输入图像转换为灰度图像和反转图像的函数    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)    dst = 255 - gray    return dstdef Log(img, c):    # 对输入图像进行对数运算并缩放    output = c * np.log(1.0 + img)    output = np.uint8(output + 0.5)    return outputdef Gamma(img, k):    # 对图像进行伽马校正    img_gamma = np.power(img, k)  # 将图像的每个像素值的幂次方为k    normImg = 255. * (img_gamma - img_gamma.min()) / (img_gamma.max() - img_gamma.min() + 1e-6)  # 对归一化后的图像进行重新线性化    img_Gamma = np.uint8(normImg)  # 将归一化后的图像转换为0到255之间的无符号整型    return img_Gamma  # 返回伽马校正后的图像def Contrast_Stretching(img, height, width):    rMin = img.min()  # 查找图像最低像素值    rMax = img.max()  # 查找图像最高像素值    r1, s1 = rMin, 0  # 初始化r1和s1为最低像素值和0    r2, s2 = rMax, 255  # 初始化r2和s2为最高像素值和255    img_Stretch = np.empty((width, height), np.uint8)  # 创建一个与输入图像相同大小的空矩阵,用于存储扩展对比度后的图像    k1 = s1 / r1  # 计算k1,用于将低于最低像素值的像素值映射到0    k2 = (s2 - s1) / (r2 - r1)  # 计算k2,用于将介于最低像素值和最高像素值之间的像素值映射到0到255的范围    k3 = (255 - s2) / (255 - r2)  # 计算k3,用于将高于最高像素值的像素值映射到0到255的范围    for h in range(height):  # 遍历图像的每一行        for w in range(width):  # 遍历图像的每一列            if img[h, w] = a) & (img1[:, :] = a) & (img1[:, :] 

上一篇:flutter 修改app名字和图标

下一篇:字母h发音音标怎么读音?