重新学习2.0以上OPENCV(基于MAT类型)1
来源:互联网 发布:数据库原理王珊答案 编辑:程序博客网 时间:2024/06/05 04:18
一直没有好好系统的做编程的学习工作,现在才发现,做好笔记是多么重要。。。
参考手册地址:http://docs.opencv.org/2.4.13.2/(中文的虽然看起来简单,但存在很多问题。。。)
参考的博主:☆Ronny丶(http://www.cnblogs.com/ronny/p/opencv_road_1.html)
首先是预编译的部分:
#include "stdafx.h"#include<opencv2\opencv.hpp>#include<opencv2\core\core.hpp>#include<opencv2\highgui\highgui.hpp>#include<iostream>using namespace cv;using namespace std;
1.opencv.hpp包含大部分opencv2.0以上的图像处理函数,函数实现功能可以查看手册,core.hpp于opencv的一些基础数据结构相关,highgui.hpp和opencv的一些界面相关,如显示图像的窗口。
2.Mat是OpenCV里最基本的一个类,它用来表示图像。
3.用到了命名空间cv和std,这样接下来的编程中就不必加cv::和std::
补充:NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,不同的人的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数,使用起来就有问题。为解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。
int _tmain(int argc, _TCHAR* argv[]){ Mat Image;//image(240,320,CV_8U,Scalar(100));声明后图像的大上为0*0的,当然我们也可以初始化一个固定大小的图像,CV_8U,8位单通道无符号整型,100填充所有像素点。 Mat newImage;//经过处理的图像放newImage中。 Image=imread("example.png"); namedWindow("initaldata"); namedWindow("processeddata"); cvtColor(image,result,CV_BGR2GRAY); imshow("initaldata",Image); imshow("processeddata",newImage); waitKey(0); return 0;}
1.想让上面程序正确显示出你的图像,请把图像放在正确的路径,或者直接写绝对路径。
2.上面程序中已经用到了图像的读入函数imread、图像的显示函数imshow,那么图像的写入函数imwrite就不会显示陌生了。
imwrite(“output.jpg”,image);
它的第一个参数是写图像的路径,第二个参数是要写入的图像。
3.cvtColor(image,result,CV_BGR2GRAY)。OpenCV API Reference的描述:
C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
Parameters:
src:input image: 8-bit unsigned, 16-bit unsigned ( CV_16UC… ), or single-precision floating-point.
dst:output image of the same size and depth as src.
code:color space conversion code (see the description below).
dstCn:number of channels in the destination image; if the parameter is 0, the number of the channels is derived automatically from src and code .
赋值与复制:
如果我们想得到一个图像的副本并进行了下面的操作:
Mat newImage=Image;
如果我们对newImage进行修改或操作,则会直接影响Image图像,因为newImage与Image共用了数据内容。
想要真正得到一个副本可以这样做:
Mat newImage;Image.copyTo(newImage);//方法一Mat newImage=image.clone();//方法二
很多时候,我们并不想得到原图像的复制,但是要创建一个跟原图像大小相同的图像。下面的代码可以完成这样的功能。
Mat newImage;newImage.create(Image.size(),Image.type());
也算是照着☆Ronny丶大大的流程走一遍,希望能巩固自己的数字 图像处理的基础。
- 重新学习2.0以上OPENCV(基于MAT类型)1
- 重新学习2.0以上OPENCV(基于MAT类型)2
- 重新学习2.0以上OPENCV(基于MAT类型)3
- OpenCV中Mat 类型学习笔记
- opencv学习笔记(1)Mat
- opencv 学习记录(1)Mat IpImage
- 【OpenCV学习笔记】【类型转换】一(IplImage和cv::Mat的类型相互转换)
- opencv中的Mat类型
- OPENCV Mat 类型
- 【OpenCV学习笔记】【函数学习】九(RGB空间各通道分离)--Mat类型
- 【OpenCV学习笔记】之四:二值图像细化方法/骨架提取----基于2.0 Mat接口
- openCV学习笔记(9)Mat与IplImage,CvMat类型之间转换
- 学习openCV之Mat类型访问每个像素
- opencv学习笔记(1)--深度解析Mat
- openCV学习笔记(6):Mat类/数据结构详解(1)
- opencv Mat 理解(1)
- openCV(1)-Mat初始化
- opencv学习1——Mat介绍
- 参数的范数正则/惩罚(parameter norm penalties)
- day01
- Rxjava基本使用
- 利率计算
- JFinal中使用freemarker模板时session对象取不出的解决办法
- 重新学习2.0以上OPENCV(基于MAT类型)1
- 第一行代码学习笔记 第二章
- 计算机网络原理五层协议体系初解
- 2016np网络程序设计学习总结
- nodejs 和 swoole 简单测试
- SetBkMode函数用法详解
- AI
- 04-树6 Complete Binary Search Tree (30分)
- python学习笔记-静态方法和类方法区别