ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:1.59MB ,
资源ID:17231922      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17231922.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Opencv学习笔记一Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Opencv学习笔记一Word文档下载推荐.docx

1、opencv2opencv.hpp#include using namespace cv;using namespace std;int main() cout hello opencv opencv2/imgcodecs.hppopencv2/highgui.hppstring namespaceint main(int argc, char* argv) /! load String imageName(cute.jpg / by default if (argc 1) imageName = argv1; mat Mat image; imread image = imread(imag

2、eName, IMREAD_COLOR); / Read the file if (image.empty() / Check for invalid inputCould not open or find the image std:endl; return -1; window namedWindow(Display window, WINDOW_AUTOSIZE); / Create a window for display. imshow imshow(, image); / Show our image inside it. wait waitKey(0); / Wait for a

3、 keystroke in the window二 Mat,图像的新容器基础知识自从版本2.0,OpenCV采用了新的数据结构,用Mat类结构取代了之前用extended C写的cvMat和lplImage,更加好用啦,最大的好处就是更加方便的进行内存管理,对写更大的程序是很好的消息。int main(int argc,char *argv) /声明类 image = imread(, IMREAD_COLOR); if (!image.data) / Check for invalid input Mat gray_image; cvtColor(image, gray_image, CV_

4、BGR2GRAY); /将彩色图像变为灰度图像 imwrite(Gray_Image.jpg, gray_image); /write pictureColor image, CV_WINDOW_AUTOSIZE);Gray image /原图 /灰色Mat解析1. Mat是一个类,有构造函数,赋值函数等1 Mat A, C; / creates just the header parts2 A = imread(argv1, CV_LOAD_IMAGE_COLOR); / here well know the method used (allocate matrix)3 Mat B(A);

5、/ Use the copy constructor4 C = A; / Assignment operator2. 如果要拷贝自己的矩阵:1 Mat F = A.clone();2 Mat G;3 A.copyTo(G);3. 构造函数解析 Mat M(2,2, CV_8UC3, Scalar(0,0,255);M = endl M MatMat I;IplImage* pI = &I.operator IplImage();CvMat* mI = &I.operator CvMat();5. 改变矩阵creat()函数 不能用来初始化一个矩阵,它不是构造函数,它用来改变一个已有的矩阵的格式

6、。Create() function:M.create(4,4, CV_8UC(2);cout 6. Matlab类型初始化操作Mat E = Mat:eye(4, 4, CV_64F);E = E Mat O = Mat:ones(2, 2, CV_32F);O = O Mat Z = Mat:zeros(3,3, CV_8UC1);Z = Z 三 图像处理的基本操作Opencv图像处理基本操作1基本数据类型图像有若干个通道,灰度图像只有一个通道,而彩色具有红,绿,蓝组成,但是OpenCv以逆序的方式来存储三个分量,还可以使用第四个透明度(alpha),可以使用img.channels()获

7、取图像通道个数。使用若干个位存储一副图像的每个像素,这被称为图像的深度,灰度图像为8位,即0-255个灰度级,可以用img.depth()获得图像的深度,其返回值为:CV_8U - 8-bit unsigned integers ( 0.255 ) CV_8S - 8-bit signed integers ( -128.127 ) CV_16U - 16-bit unsigned integers ( 0.65535 ) CV_16S - 16-bit signed integers ( -32768.32767 ) CV_32S - 32-bit signed integers ( -21

8、47483648.2147483647 ) CV_32F - 32-bit floating-point numbers ( -FLT_MAX.FLT_MAX, INF, NAN ) CV_64F - 64-bit floating-point numbers ( -DBL_MAX.DBL_MAX, INF, NAN )对于灰度图像和彩色图像,最常见的是CV_8U.Mat img=imread(lena.png,IMREAD_GRAYSCALE);Mat fp;img.convertTo(fp,CV_32F);/改变图像的深度1232 像素级访问1. 第一种方法:模板函数atuchar pix

9、el=img.at(0,0); /获得灰度图像0,0点像素Vec3b pixel=img.at /获得3波段图像的第一个波段(0,0)像素。第一种方法,效率不高,必须定位到他所在的位置2. 第二种方法:函数ptr他返回图像特定行的指针。因此可以得到每一行的数据,时间复杂度降低, 如下代码获取一副彩色图像的每个像素值。/时间复杂度大大降低!uchar R,G,B;for (int i=0;iimg.rows;i+) /遍历行 Vec3b pixRow=img.ptr(i);for (int j=0;j input; / We use the alpha provided by the user

10、if it is between 0 and 1 if (input = 0.0 & input = 1.0) alpha = input; / Read image ( same size, same type ) src1 = imread(LinuxLogo.jpg src2 = imread(WindowsLogo.jpgsrc1.data) printf(Error loading src1 nsrc2.data) printf(Error loading src2 n / Create WindowsLinear Blend beta = (1.0 - alpha); addWei

11、ghted(src1, alpha, src2, beta, 0.0, dst);, dst);当a=0时,此时只有window的logo2. Changing the contrast and brightness of an image改变图像的对比度和亮度 基础的公式为:g(i; j) = a*f(i,j) + b where i and j indicates that the pixel is located in the i-th row and j-th column. 获得一个图片的像素我们用image.at(y,x)c 这里的y为行,x为列,c代表R, G or B (0,

12、1 or 2) double alpha; /* Simple contrast control */ int beta; Simple brightness control */ / Read image given by user Mat image = imread( Mat new_image = Mat:zeros(image.size(), image.type(); /copy the origin picture size,and type / Initialize values Basic Linear Transforms -* Enter the alpha value

13、1.0-3.0: alpha;* Enter the beta value 0-100: beta; / Do the operation new_image(i,j) = alpha*image(i,j) + beta for (int y = 0; y image.rows; y+) for (int x = 0; x image.cols; x+) for (int c = 0; c 3; c+) new_image.at(y, x)c = saturate_cast(alpha*(image.at(y, x)c) + beta);/saturate_cast to make sure

14、the values are valid.Original ImageNew Image, new_image); waitKey();示例如下:可以看到改变的图片的对比度和亮度。这里可以用函数image.convertTo(new_image, -1, alpha, beta);来代替for循环,它会更有效率。Basic Drawing1. 定义一个点 2DPoint pt;pt.x = 10;pt.y = 8;Point pt = Point(10, 8);2. 画椭圆ellipse原型 void ellipse(InputOutputArray img, Point center, Si

15、ze axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);后面三个为默认的参数,可以不写。/自己写的函数,指定img,和角度void MyEllipse(Mat img, double angle) int thickness = 2; int lineType = 8; ellipse(img, Point(w / 2, w / 2), Size(w / 4, w / 16),

16、angle, 0, 360, Scalar(255, 0, 0), /为颜色 thickness, lineType);/*调用方法:*MyLine(rook_image, Point(0, 15 * w / 16), Point(w, 15 * w / 16);3. 画线段函数原型 void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);Random generator and text with OpenCV随机数产生类Ran

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1