OPENCV毕业实习报告
- 格式:pdf
- 大小:337.55 KB
- 文档页数:19
XI`AN TECHNOLOGICAL UNIVERSITY实验报告实验七使用OPENCV对两幅图像求和西安工业大学实验报告一、实验目的使用OpenCV对两幅图像求和二、实验原理线性混合操作也是一种典型的二元(两个输入)的像素操作:通过在范围 0 \rightarrow 1内改变 \alpha ,这个操可以用来对两幅图像或两段视频产生时间上的画面叠化(cross-dissolve)效果三、实验步骤、数据记录及处理示例代码1.<span style="font-size:18px;">#include<opencv2\highgui\highgui.hpp>2.#include<opencv2\imgproc\imgproc.hpp>3.4.#include <iostream>5.ing namespace std;ing namespace cv;8.9.int main()10.{11. Mat src1 = imread("src1.jpg");12. Mat src2 = imread("src2.jpg");13.14.if (!src1.data||!src2.data)15. {16. cout<<"没有成功加载图像!"<<endl;17.return -1;18. }19. namedWindow("原始图像1");20. imshow("原始图像1",src1);21. namedWindow("原始图像2");22. imshow("原始图像2",src2);23.24.double alpha = 0.5;25.double beta = 1-alpha;26.27. Mat dst;28. addWeighted(src1,alpha,src2,beta,0.0,dst);29. namedWindow("混合后图像");30. imshow("混合后图像",dst);31.32. waitKey(0);33.return 0;34.}</span>需要注意的是:既然要把两幅图像线性混合,即对应像素一一线性相加,因此src1,src2应大小相同1.<span style="font-size:18px;">addWeighted( src1, alpha, src2, beta, 0.0, dst);</span>功能:src1和src2逐像素按照开始的公式相加参数:src1 --- 输入图像1Alpha --- src1在dst中所占比例Src2 --- 输入图像2Beta --- src2在dst中所占的比例Gama --- 与混合后的值相加存入dst中Dst --- 输出图像。
一、实习背景随着人工智能技术的飞速发展,机器视觉作为人工智能的一个重要分支,已经在各个领域得到了广泛应用。
为了深入了解机器视觉技术,提高自己的实践能力,我参加了为期一个月的机器视觉认知实习。
本次实习旨在通过理论学习和实践操作,全面掌握机器视觉的基本原理、应用领域以及开发流程。
二、实习内容1. 理论学习(1)图像处理基础实习初期,我学习了图像处理的基本概念,包括像素、分辨率、灰度图、彩色图等。
通过对图像的预处理、增强、恢复等操作,我掌握了图像处理的基本方法,如滤波、锐化、阈值分割等。
(2)机器视觉原理在了解了图像处理的基础上,我进一步学习了机器视觉的基本原理,包括边缘检测、特征提取、图像识别等。
通过学习,我对图像识别的流程有了清晰的认识,并了解了常用的机器视觉算法,如Sobel算子、Canny算子、Hough变换等。
(3)深度学习与神经网络为了更好地理解机器视觉,我学习了深度学习与神经网络的基本概念。
通过对卷积神经网络(CNN)的学习,我了解了神经网络在图像识别中的应用,并掌握了TensorFlow等深度学习框架的使用。
2. 实践操作(1)图像预处理在实习过程中,我使用OpenCV等工具对图像进行预处理,包括灰度化、滤波、锐化等操作。
通过实践,我掌握了图像预处理的基本技巧,提高了图像质量。
(2)图像识别我利用机器视觉算法对图像进行识别,包括边缘检测、特征提取、图像识别等。
通过实践,我掌握了常用的图像识别算法,并提高了图像识别的准确率。
(3)深度学习应用在实习过程中,我使用TensorFlow等深度学习框架搭建了简单的神经网络模型,并应用于图像识别任务。
通过实践,我了解了深度学习在图像识别中的应用,并提高了自己的编程能力。
三、实习收获通过本次实习,我收获颇丰:1. 理论知识:我对机器视觉的基本原理、应用领域以及开发流程有了全面的认识,为今后的学习和工作打下了坚实的基础。
2. 实践能力:通过实际操作,我掌握了图像处理、图像识别、深度学习等机器视觉技术的应用,提高了自己的实践能力。
实验一:OpenCV的使用1.什么是OpenCVOpenCV是Intel开源计算机视觉库。
它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。
2.在Developer Studio 下创建基于OpenCV 的项目:1.在Developer Studio 中创建新的应用程序:(1)选择菜单"File"->"New..."->"Projects" 标签。
选择"Win32 Application" 或者"Win32 console application" - 后者是简单的方法,例程都采用这种类型。
(2)键入项目名称,并且选择保存位置。
(3)可以为项目创建一个单独的workspace ("Create new workspace"),也可以将新的项目加入到当前的workspace 中("Add to current workspace")。
(4)单击"next" 按钮。
(5)选择"An empty project",点击"Finish","OK"。
经过以上步骤,Developer Studio 会创建一个项目目录(缺省情况下,目录名就是项目名),<project name>.dsp 文件以及<project name>.dsw,.ncb 等,如果你创建自己的workspace。
2.添加文件到project 中:选择菜单"File"->"New..."->"Files" 。
选择"C++ Source File", 键入文件名,点击"OK" 。
数字图像处理实习报告
本次实习主要任务是进行数字图像处理相关工作,包括图像的预处理、特征提取、图像分割和图像识别等方面的工作。
实习过程中,我主要负责了图像处理算法的编写与优化,以及实验数据的收集与分析。
通过这次实习,我对数字图像处理技术有了更深入的了解,并且提升了自己的编程能力和团队协作能力。
在图像处理算法的编写与优化过程中,我主要使用了Python
语言和常用的图像处理库,如OpenCV和PIL等。
我研究了不同的图像处理算法,并对其进行了实验验证,优化了算法的性能和效果。
通过这些工作,我深入了解了图像处理算法的实现原理和优化方法,提升了自己在图像处理领域的技术水平。
在实验数据的收集与分析过程中,我主要负责了实验数据的采集和整理工作。
我使用了各种图像采集设备,包括相机、摄像头等,对不同场景下的图像进行了采集和整理。
然后我利用Python和Matlab等工具对实验数据进行了分析和结果展示,
为后续的图像处理算法提供了重要的支持和参考。
总的来说,这次实习让我对数字图像处理有了更深入的了解,提升了自己的技术能力和实践能力。
我在实习过程中遇到了不少困难和挑战,但通过团队合作和自我努力,最终都得以克服,取得了一定的成果。
通过这次实习,我深刻地感受到了数字图像处理技术的重要性和广阔的应用前景,也对自己未来的发展方向有了更清晰的认识。
希望通过这次实习的经历,我能够为将来的学习和工作打下坚实的基础。
XI`AN TECHNOLOGICAL UNIVERSITY实验报告实验三 OPENCV的基本图像操作西安工业大学实验报告一、实验目的了解opencv的基本图像操作,并运用opencv对图像进行操作。
二、实验原理Opencv中含有很多的图像处理功能,这里介绍一些基本的图像操作。
三、实验步骤、数据记录及处理1. 矩阵数据类型通用矩阵数据类型:CV_<bit_depth>(S|U|F)C<number_of_channels>其中,S表示带符号整数;U表示无符号整数;F表示浮点数;例如:CV_8UC1 表示8位无符号单通道矩阵;CV_32FC2 表示32位浮点数双通道矩阵;2. 图像数据类型通用图像数据类型为:IPL_DEPTH_<bit_depth>(S|U|F)如:IPL_DEPTH_8U 表示8位无符号整数图像;IPL_DEPTH_32F 表示32位浮点数图像;3. 分配和释放图像3.1 分配一幅图像IpIImage * cvCreateImage(cvSize size, int depth, int channels); 其中size可以用cvSize(width, height)得到。
depth为像素的单位,包括:IPL_DEPTH_8UIPL_DEPTH_8SIPL_DEPTH_16UIPL_DEPTH_16SIPL_DEPTH_32SIPL_DEPTH_32FIPL_DEPTH_64Fchannels为每个像素的通道数,可以是1,2,3或4。
通道是交叉排列的,一幅彩色图像的通常的排列顺序是:b0 g0 r0 b1 g1 r1 ...例如:分配一个单通道单字节图像的语句是:IpIImage* img1 = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 1); 分配一个三通道浮点数图像语句是:IpIImage* img2 = cvCreateImage(cvSize(640, 480), IPL_DEPTH_32F, 3);3.2 释放图像void cvReleaseImage(IpIImage **);3.3 复制一幅图像IpIImage* cvCloneImage(IpIImage *);如:IpIImage* img1 = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 1); IpIImage* img2;img2 = cvCloneImage(img1);3.4 设置或得到感兴趣区域ROIvoid cvSetImageROI(IpIImage* image, cvRect rect);void cvResetImageROI(IpIImage* image);vRect cvGetImageROI(const IpIImage* image);4. 图像的读写4.1 从文件中获取图像从文件中读取图像可以采用下面的语句:IpIImage* img = 0;img = cvLoadImage(filename);if (!img)printf("Could not load image file: %s\n", filename);默认为读取三通道图像。
opencv项目实践
(实用版)
目录
1.OpenCV 简介
2.OpenCV 项目实践案例
3.OpenCV 的应用领域
4.总结
正文
1.OpenCV 简介
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了大量的图像处理和计算机视觉方面的算法。
OpenCV 的目的是为人工智能、机器视觉、图像处理等领域的研究人员和开发者提供一个通用且高效的平台,用于实现各种图像处理和计算机视觉任务。
2.OpenCV 项目实践案例
在 OpenCV 的项目实践中,我们可以通过一些具体的案例来学习和掌握 OpenCV 的使用。
例如,我们可以使用 OpenCV 进行长时间曝光摄影技术的仿真,通过使用长时间快门速度来清晰地捕捉图像的静止元素,同时使运动元素模糊。
此外,我们还可以利用 OpenCV 实现去除图像中的多余杂线,以及进行直方图分析等。
3.OpenCV 的应用领域
OpenCV 在许多领域都有广泛的应用,例如:
- 机器视觉:在工业生产线上,通过使用 OpenCV,可以对产品进行自动检测和质量控制。
- 医学影像:OpenCV 可以用于医学影像的处理和分析,例如肿瘤检
测、器官分割等。
- 人脸识别:OpenCV 可以实现人脸识别和追踪,用于安防监控等领域。
- 自动驾驶:OpenCV 可以实现车载摄像头和危险警告等,用于自动驾驶等领域。
4.总结
OpenCV 作为一个开源的计算机视觉库,包含了大量的图像处理和计算机视觉方面的算法,可以用于实现各种图像处理和计算机视觉任务。
《OpenCV图像处理》---上机实验报告 11.实验题目:改变图像的对比度和亮度2.实验目的:(1)访问像素值;(2)用0初始化矩阵;(3)saturate cast是做什么用的,以及它为什么有用。
3.实验原理:(1)图像处理:一般来说,图像处理算子是带有一幅或多幅输入图像、产生一幅输出图像的函数。
图像变换可分为以下两种:点算子(像素变换)、领域(基于区域的)算子;(2)像素变换:在这一类图像处理变换中,仅仅根据输入像素值(有时可加上某些全局信息或参数)计算相应的输出像素值。
这类算子包括亮度和对比度调整,以及颜色校正和变换;(3)亮度和对比度调整:两种常用的点过程(即点算子),是用常数对点进行乘法和加法运算g(x)=αf(x)+ß;(4)两个参数>0和一般称作增益和偏置参数。
我们往往用这两个参数来控制对比度和亮度;(5)你可以把看成源图像像素,把g(x)看成输出图像像素。
这样一来,上面的式子就能写的更清楚些g(i,j)=α*f(i,j)+β,其中i,j表示像素位于第i行和第j 列。
4.实验步骤:(1)建立两个变量,以便存储用户输入的α和β:(2)用imread载入图像,并将其存入一个Mat对象:(3)此时,因为要对图像进行变换,所以我们需要一个新的Mat对象,以存储变换后的图像,我们希望这个Mat对象具有如下性质:1)像素值初始化为0;2)与原图像有相同的大小和类型。
注意到:Mat::Zeros采用Matlab风格的初始化方式,用image.size()和image.type()来对Mat对象进行0初始化。
(4)现在为了执行运算g(i,j)=α*f(i,j)+β,我们要访问图像的每一个像素,因为是对RGB图像进行运算,每个像素有三个值(R,G,B),所以要分别访问他们,下面是访问像素的代码片段:注意:为了访问图像的每一个像素,我们使用如下语法image.at<Vec3b>(y,x)[c],其中,y是像素所在的行,x是像素所在的列,c是R、G、B(0、1、2)之一,因为α*p(i,j)+β的运算结果可能超出像素取值范围,还可能是非整数(如果α是浮点数的话),所以我们要用saturate-cast对结果进行转换,以确保他为有效值。
《遥感原理与应用课程设计》实习报告学院: 遥感信息工程学院班级:学号:姓名:实习地点: 5-325机房指导教师: 石文轩2016年 6 月16 日基于多项式的遥感图像几何纠正摘要:本次实习大致分为两个部分,第一部分是通过调用OpenCV 函数实现遥感图像的基本处理,我们小组选择的题目是专题二,对彩色图像进行缩放、旋转等几何操作。
第二部分是自主编程实现遥感图像处理,我们小组抽到的是基于多项式的遥感图像几何纠正,包括纠正多项式系数的解算,纠正变换函数的建立,坐标转换和灰度重采样的算法原理与编程实现。
本文主要介绍实现第二个任务的主要原理,具体步骤,试验结果展示以及遇到的问题分析和心得总结。
关键词:多项式,几何纠正,重采样1 原理介绍1.1 利用地面已知控制点求解多项式系数一般多项式纠正的变换公式如下:上式中,x,y为像素的原始图像坐标,X,Y为同名像素点的地面坐标。
利用地面已知控制点求解多项式系数的具体步骤如下:1.1.1 列出误差方程式1.1.2 构成法方程1.1.3计算多项式系数1.1.4 精度判定其中,n为控制点的个数,N为纠正系数的个数,n-N 为多余观测数。
评定精度的步骤是设定一个限差ε,作为精度评定的标准,如果通过上式计算出的δ>ε,则说明计算结果存在一定程度的粗差,精度超限结果不可取。
并对每一个控制点上的平差残余误差Vx,Vy进行比较检查,将最大者视为粗差并将其剔除或重新选点进行平差,直至满足δ<ε的精度评定标准为止。
1.2 遥感图像的几何纠正变换在进行遥感图像的几何纠正变换之前,需要先在计算机中为输出图像开辟一定的存储空间,即确定输出图像的空间边界以及地图地面坐标值。
1.2.1 把原始图像的四个角点坐标按照纠正变换函数计算出投影到地图坐标系统中的坐标值:(X1,Y1), (X2,Y2), (X3,Y3), (X4,Y4)。
1.2.2 对上述四个坐标按照横、纵坐标分别分组并求出最大最小值,所得结果即为纠正后图像的边界的地图坐标系的值。
一、实习背景随着科技的不断发展,计算机视觉技术在各行各业中的应用越来越广泛。
为了深入了解计算机视觉领域,提升自己的专业技能,我于2021年7月至9月参加了为期两个月的计算机视觉实习。
实习期间,我参与了图像处理、目标检测、图像分割等项目的研发,对计算机视觉技术有了更深入的了解。
二、实习内容1. 图像处理在实习期间,我首先学习了图像处理的基本知识,包括图像的像素、分辨率、颜色模型等。
通过学习OpenCV库,掌握了图像的读取、显示、变换、滤波、边缘检测等操作。
具体实习内容包括:(1)图像读取与显示:使用OpenCV读取图像文件,并显示图像。
(2)图像变换:对图像进行平移、旋转、缩放等变换。
(3)图像滤波:使用均值滤波、高斯滤波等算法对图像进行平滑处理。
(4)边缘检测:使用Canny算子、Sobel算子等算法对图像进行边缘检测。
2. 目标检测目标检测是计算机视觉领域的一个重要研究方向。
在实习期间,我学习了目标检测的基本原理,并使用OpenCV和TensorFlow等工具进行目标检测实验。
具体实习内容包括:(1)目标检测算法:学习SSD、YOLO、Faster R-CNN等目标检测算法。
(2)数据集准备:对目标检测数据集进行预处理,包括图像缩放、旋转、裁剪等。
(3)模型训练与优化:使用TensorFlow框架训练目标检测模型,并对模型进行优化。
3. 图像分割图像分割是将图像分割成若干个互不重叠的区域,每个区域对应图像中的某个对象。
在实习期间,我学习了图像分割的基本原理,并使用OpenCV和深度学习技术进行图像分割实验。
具体实习内容包括:(1)图像分割算法:学习基于区域生长、基于边缘、基于深度学习的图像分割算法。
(2)数据集准备:对图像分割数据集进行预处理,包括图像缩放、旋转、裁剪等。
(3)模型训练与优化:使用深度学习框架(如TensorFlow、PyTorch)训练图像分割模型,并对模型进行优化。
三、实习成果1. 完成了图像处理、目标检测、图像分割等项目的研发,积累了丰富的实践经验。