实验 1 图像基本操作

1. 实验目的

①熟悉 Photoshop 基本操作;
②掌握 Matlab 、Python+OpenCV 中处理图像的基本方法;
③掌握图像的半调转换和抖动转换。

2. 实验内容

①Photoshop 基本操作:打开图像文件,选择区域,旋转、裁剪图像、图层操作;
②Matlab 、Python+OpenCV 基本操作:读入图像,改变图像尺寸,旋转、裁剪图像,计算图像的基本特征指标。
③使用 Matlab 完成图像的半调转换和抖动转换并显示结果。

3. 实验过程

3.1 Photoshop 图像基本操作

① 实验步骤(需详细介绍每一步实验步骤)
(1) 打开图像文件:

  • 首先打开Ps软件
  • 其次打开图片

在这里插入图片描述

(2) 选择区域:
在这里插入图片描述

在这里插入图片描述

(3) 裁剪图像:

在这里插入图片描述
按下Enter键

在这里插入图片描述
(4) 旋转图像:

在这里插入图片描述
可以选择选择180°等各类操作
(5) 图层操作:(包括图层的创建,复制,删除,锁定,合并,显示隐藏图层和更改图层顺序)
② 实验结果展示

3.2 Matlab 、Python+OpenCV 图像基本操作

3.2.1 Matlab 实现:
使用 Matlab 编写代码完成读入图像,改变图像尺寸,旋转、裁剪图像, 计算图像的基本特征指标等功能并展示结果。
①主要函数及其参数

请填写 以下Matlab 函数对应的参数说明:
imread(filename)读取名为 filename的图像
imfinfo (filename)获取图像名为 filename的各种信息
translate(SE, [y x])是一个用来进行平移操作的函数,其中SE表示待平移的对象或坐标系,[y x]表示平移向量,用于指定在y轴和x轴方向上的位移量。
imrotate(img,30)是一个用于图像旋转的函数。其中,img代表待旋转的图像,而30表示旋转的角度,以逆时针方向为正
imresize(img,a,‘method’)是一个用于对图像进行尺寸调整的函数。其中,img表示待调整尺寸的图像,a表示尺寸调整的比例或目标尺寸,而'method'表示所采用的调整方法
close()是一个用于关闭图形窗口的函数
subplot(m,n,p)是一个用于在图形窗口中创建子图的函数, subplot函数用于将图形窗口划分为一个m×n的网格,并在指定位置p上创建一个子图
rgb2gray(image)是一个用于将RGB图像转换为灰度图像的函数
imcomplement(image)是一个用于对图像进行反色处理的函数

② 实验代码展示

clear all;
clc;
% 读入图像
image = imread('D:\WorkSpace\matlab\lena.png');% 显示原始图像
figure;
subplot(2, 3, 1);
imshow(image);
title('原始图像');% 改变图像尺寸
resizedImage = imresize(image, 0.5);% 显示改变尺寸后的图像
subplot(2, 3, 2);
imshow(resizedImage);
title('改变尺寸后的图像');% 旋转图像
rotatedImage = imrotate(image, 45);% 显示旋转后的图像
subplot(2, 3, 3);
imshow(rotatedImage);
title('旋转后的图像');% 裁剪图像
croppedImage = image(50:200, 100:300, :);% 显示裁剪后的图像
subplot(2, 3, 4);
imshow(croppedImage);
title('裁剪后的图像');% 计算图像的基本特征指标
grayImage = rgb2gray(image);
meanValue = mean2(grayImage);
stdDeviation = std2(grayImage);
maxValue = max(grayImage(:));
minValue = min(grayImage(:));% 显示图像的特征指标
subplot(2, 3, [5, 6]);
imshow(grayImage);
title('图像的灰度图');
text(10, 20, ['均值: ' num2str(meanValue)], 'Color', 'r');
text(10, 40, ['标准差: ' num2str(stdDeviation)], 'Color', 'r');
text(10, 60, ['最大值: ' num2str(maxValue)], 'Color', 'r');
text(10, 80, ['最小值: ' num2str(minValue)], 'Color', 'r');

③ 实验结果展示

在这里插入图片描述

3.2.2 Python+OpenCV 实现

使用 Python+OpenCV 库编写代码完成读入图像,改变图像尺寸,旋转、 裁剪图像,计算图像的基本特征指标等功能并展示结果。
① 主要函数及其参数
请填写以下函数对应的参数说明:

请填写 以下Matlab 函数对应的参数说明:
cv.imread(filename, [flags])是用来读取图像文件的。其中,filename是要读取的像文件的路径,flags是一个标志位参数。
cv2.rotate用于对图像进行旋转操作。根据引用,cv2.rotate有三个参数,分别是待旋转的图像(img),旋转方向(cv2.ROTATE_90_CLOCKWISE、cv2.ROTATE_180、cv2.ROTATE_90_COUNTERCLOCKWISE),以及旋转后的图像(rotate_90_cv、rotate_180_cv、rotate_270_cv)
cv2.resize是OpenCV库中用于调整图像大小的函数

② 实验代码展示

import cv2 as cv# 读入图像
image = cv.imread('lena.png')# 显示原始图像
cv.imshow('原始图像', image)
cv.waitKey(0)# 改变图像尺寸
resized_image = cv.resize(image, (0, 0), fx=0.5, fy=0.5)# 显示改变尺寸后的图像
cv.imshow('改变尺寸后的图像', resized_image)
cv.waitKey(0)# 旋转图像
height, width = image.shape[:2]
rotation_matrix = cv.getRotationMatrix2D((width / 2, height / 2), 45, 1)
rotated_image = cv.warpAffine(image, rotation_matrix, (width, height))# 显示旋转后的图像
cv.imshow('旋转后的图像', rotated_image)
cv.waitKey(0)# 裁剪图像
cropped_image = image[50:200, 100:300]# 显示裁剪后的图像
cv.imshow('裁剪后的图像', cropped_image)
cv.waitKey(0)# 计算图像的基本特征指标
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
mean_value = cv.mean(gray_image)[0]
standard_deviation = cv.meanStdDev(gray_image)[1][0][0]
min_value, max_value, _, _ = cv.minMaxLoc(gray_image)# 显示图像的特征指标
cv.imshow('图像的灰度图', gray_image)
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(gray_image, f" {mean_value}", (10, 20), font, 0.6, (255, 255, 255), 1)
cv.putText(gray_image, f" {standard_deviation}", (10, 40), font, 0.6, (255, 255, 255), 1)
cv.putText(gray_image, f" {max_value}", (10, 60), font, 0.6, (255, 255, 255), 1)
cv.putText(gray_image, f" {min_value}", (10, 80), font, 0.6, (255, 255, 255), 1)
cv.imshow('图像的特征指标', gray_image)
cv.waitKey(0)cv.destroyAllWindows()

③ 实验结果展示
原始图像

在这里插入图片描述

改变尺寸后的图像

在这里插入图片描述
旋转后的图像

在这里插入图片描述
裁剪后的图像
在这里插入图片描述
显示图像的特征信息
在这里插入图片描述

3.3 图像的半调转换和抖动转换。

3.3.1 图像的半调转换
使用 Matlab 编写代码并读取一张图像,完成4×4 的半调转换并显示原图和结果。
① 实验代码展示

% 读入图像
image = imread('lena.png');% 显示原图像
figure;
subplot(1, 2, 1);
imshow(image);
title('原始图像');% 获取图像大小和通道数
[height, width, ~] = size(image);% 计算每个像素的阈值
threshold = 255 / 2;% 进行4×4半调转换
for i = 1 : 4 : heightfor j = 1 : 4 : widthblock = image(i : i + 3, j : j + 3, :);gray_block = rgb2gray(block);binary_block = gray_block > threshold;block(:, :, 1) = uint8(binary_block) * 255;block(:, :, 2) = uint8(binary_block) * 255;block(:, :, 3) = uint8(binary_block) * 255;image(i : i + 3, j : j + 3, :) = block;end
end% 显示半调转换后的图像
subplot(1, 2, 2);
imshow(image);
title('半调转换后的图像');

② 实验结果展示

在这里插入图片描述

3.3.2 图像的抖动转换

(1)调用 Matlab 中的抖动函数,dither 。观察原图和抖动转换后的结果。
① 实验代码展示

% 读入图像
image = imread('lena.png');% 将图像转换为灰度图像
gray_image = rgb2gray(image);% 显示原图像
figure;
subplot(1, 2, 1);
imshow(image);
title('原始图像');% 进行抖动转换
dithered_image = dither(gray_image);% 显示抖动转换后的图像
subplot(1, 2, 2);
imshow(dithered_image);
title('抖动转换后的图像');

② 实验结果展示

在这里插入图片描述

4. 实验小结

①在安装 Matlab 和 OpenCV 库时,你遇到了哪些问题,是如何解决的。
答:没有任何困难,按照网上教程傻瓜式安装即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

os实训课程模拟考试(大题复习)

目录 一、Linux操作系统 (1)第1关:Linux初体验 (2)第2关:Linux常用命令 (3)第3关:Linux 查询命令帮助语句 二、Linux之进程管理—(重点) &…

青岛网站建设一般多少钱

青岛网站建设的价格一般会根据网站的规模、功能、设计风格等因素来定,价格会存在着一定的差异。一般来说,一个简单的网站建设可能在数千元到一万元之间,而一个复杂的大型网站建设可能会需要数万元到数十万元不等。所以在选择网站建设服务时&a…

[Cloud Networking] BGP

1. AS (Autonomous System) 由于互联网规模庞大,所以网络会被分为许多 自治系统(AS-Autonomous system)。 所属类型ASN名称IPv4 数量IPv6数量运营商ISPAS3356LEVEL3 - Level 3 Parent, LLC, US29,798,83273,301,954,048互联网企业AS15169GO…

java接口自动化测试,怎样可以快速入门?

从0到1,快速入门Java接口自动化测试 Java接口自动化测试是一种自动化测试的方式,通过模拟用户发送HTTP请求并验证返回结果,来测试接口的正确性。它可以大大提高测试效率和覆盖率,减少人工测试的工作量。本文将从零开始&#xff0…

【NodeJs】入门

目录 一、前导 二、 url模块 三、path模块 四、buffer模块 五、fs模块 六、stream流模块 七、os模块 八、crypto模块 九、util模块 十、http模块 nodejs官网 Node.js — 在任何地方运行 JavaScript nmp是Node.js包管理器,用来安装各种库、框架和工具&…

pdf怎么转换成jpg,本地转换还是在线转换?

PDF(Portable Document Format)和JPG(Joint Photographic Experts Group)这两种文件格式在我们的日常生活和工作中扮演着举足轻重的角色。PDF因其跨平台、保持原样性强的特点,被广泛应用于文件传输和存储;而…

从0到1搭建Java开发环境(内涵超详细教程、软件、提供网盘链接直接一步到位!!!!)

软件部分 需要的软件为下面两个: IDEANavicat 需要的可以自行拿(安装教程和软件): 链接:https://pan.baidu.com/s/1y3RoMt0ZapyJsj3P0DPaVA?pwdxr4p 提取码:xr4p 环境部分 需要的环境为以下几个&…

springboot+vue+mybatis奶茶管理系统+PPT+论文+讲解+售后

由于科学技术的快速发展,人们的生活也与信息时代的发展相关。同时,随着市场化和经济化的发展,国内很多行业已经意识到了这一点,为了提升行业的竞争力,就应当率先把握机会。于是在互联网的默化潜移影响下,餐…

【Qt+opencv】编译、配置opencv

文章目录 前言下载opencv编译opencvmingw版本 总结 前言 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它包含了超过2500个优化的算法。这些算法可以用来检测和识别面部,识别对象&#x…

UML建模笔记

5个视图 设计。类,接口,对象如何协作。实现。组件,运行程序,文档关系。用例。用户功能期望。进程。并发与同步相关进程,线程。部署。部署到计算机。 建模目的 和客户共创追踪需求变更协同开发进度控制持续迭代测试生…

前端工程化08-新的包管理工具pnpm

1、历史原因解读 pnpm这个东西发布的时间是比较早的,但是在最近一两年的时候才开始流行,甚至是可以说非常的盛行,那么这个包到底是个什么东西的,那么我们先说下,原来的包管理工具到底有那些问题?比如说我们…

MySQL自增主键踩坑记录

对于MySQL的自增主键,本文记录、整理下在工作中实际遇到的问题。 下面示例均基于MySQL 8.0 修改列的类型后,自增属性消失 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL );上面的…

论文学习——一种自适应提升的动态多目标优化进化算法

论文题目:A dynamic multi-objective optimization evolutionary algorithm with adaptive boosting 一种自适应提升的动态多目标优化进化算法(Hu Peng a,b,∗, Jianpeng Xiong a, Chen Pi a, Xinyu Zhou c, Zhijian Wu d)IEEE Swarm and Ev…

phpstorm2024代码总是提示“no usages”或者“无用法”解决办法

问题:phpstorm2024使用时,总是会提示无用法,如果没有安装中文语言包的情况下会提示:no usages,如果想关闭怎么办? 编译器右上角点击齿轮进入设置,按照下图的方法点击即可关闭。或者在编译器的“…

机器学习——强化学习中的“策略π”的个人思考

这两天回顾了《西瓜书》中的最后一章——“强化学习”,但是忽然发现之前对于本章中的“策略π”的理解有些偏差,导致我在看值函数公式时有些看不明白。对此,我在网上查了一些资料,但是大部分人都是一笔带过,或者是照本…

c++ 设计模式 的课本范例(中)

(10)单例模式 singleton 。整个应用程序执行时,只有一个单例模式的对象。 class GameConfig // 懒汉式,啥时候用单例对象,啥时候创建。 { private:static GameConfig* ptrGameConfig; // 这些函数都作为私有函数&…

【wsl2】WIN11借助wsl2挂载ext4磁盘

我有一块ext4文件系统的硬盘,想要在win11上访问,我们可以通过wsl2进行挂载 wsl2的安装就跳过了,可以自行搜索安装。 安装完成后 >>> GET-CimInstance -query "SELECT * from Win32_DiskDrive"通过这个命令,可…

汽车电子工程师入门系列——AUTOSAR通信服务框架(上)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

Spring Boot项目如何配置跨域

1、通过SpringSecurity进行配置 2、前端跨域配置:proxy配置项用于设置代理规则,用于前端开发中与后端API交互时使用。

ROS2自定义接口Python实现机器人移动

1.创建机器人节点接口 cd chapt3_ws/ ros2 pkg create example_interfaces_rclpy --build-type ament_python --dependencies rclpy example_ros2_interfaces --destination-directory src --node-name example_interfaces_robot_02 --maintainer-name "Joe Chen" …