OpenCV2计算机视觉应用编程手册(自学版)初级二
2014-11-27 22:29
471 查看
OpenCV2计算机视觉应用编程手册(自学版)初级二
本部分实现的功能包括:
/******************************************************************************************
1-- 读取图像的高度和宽度--很有必要建议学习一下Matlab,很相似的
方法1:
cout<< "size: "<< image.cols << " , "<< image.rows << endl;// 方法
方法2:
cout << "size: " << image.size().height << " , "<< image.size().width << endl;
2 复制图像
image=img;// 如果我们对image 进行操作的时候,img 数据也会改变。在opencv中image和img指向
了同一块内存区域,opencv并没有给image重新分配一块内存区域。
3--图像翻转
flip(image,result,1); // positive for horizontal
// 参数 1-- 水平翻转 0--垂直翻转 负数--- 水平和垂直都翻转
4--图像保存
imwrite("F:\\output.bmp", result);//保存图像,和matlab操作一样
5--调用复制函数copyTo
result.copyTo(image3); // a new copy is created
(1)解释:重要
Mat newImage=Image;
如果我们对newImage进行修改或操作,则会直接影响Image图像,因为newImage与Image共用了数据内容。
想要真正得到一个副本可以这样做:
Mat newImage;Image.copyTo(newImage);// 方法一
Mat newImage=image.clone();//方法二
(2)很多时候,我们并不想得到原图像的复制,但是要创建一个跟原图像大小相同的图像。
下面的代码可以完成 这 样的功能。
Mat newImage;
newImage.create(Image.size(),Image.type());
6--调用函数,显示一幅人为生成的灰度图像
**************************************************************************************/
/*******************************************************
时间:2014年11月27日22:37:00
整理:天空之恋
运行环境:VS2008+OpenCV2.3.1+Win7
运行问题:编译通过、运行成功
参考:OpenCV.2.Computer.Vision.Application.Programming.Cookbook配套例程,但是
有些东西是自己修改的。这本书和配套例程CSDN上面有免费分享的,没有的朋友可以去
我的网盘下载:http://pan.baidu.com/s/1hqEbDDa
*****************************************************/
#include "stdafx.h"
#include<iostream>
#include <opencv2/opencv.hpp>
using namespace std;// 使用STD
using namespace cv;// 使用名字空间
/*
显示灰度图像
下面的代码创建了一个灰度图像,大小是*240,图像上每个点的数据类型是无符号位的,并用填充所有像素点。
你可以把CV_8U换成CV_8U3来创建一个三通道的彩色图像。或者用CV_16U创建无符号位的。
*/
Mat function() {
// create image
Mat ima(240,320,CV_8U,cv::Scalar(100));
// return it
return ima;
}
int main(int argc, char* argv[])
{
const char* imagename = "F:\\house.jpg";
Mat image;//读入之前
cout << "size: " << image.size().height << " , "<< image.size().width << endl;//没有赋值之前是0
//从文件中读入图像
Mat img = imread(imagename);//这个地方类似matlab,在这个地方我要好好学习了
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//1--- 输出高度和宽度
image=img;
//cout<< "size: "<< image.cols << " , "<< image.rows << endl;// 方法
cout << "size: " << image.size().height << " , "<< image.size().width << endl;
//2显示图像
//namedWindow("第一个Opencv测试程序");
imshow("第一个Opencv测试程序", img);
//此函数等待按键,按键盘任意键就返回
//声明另外一个矩阵存储处理之后的图片,调用Flip来水平翻转图像
// 参数水平翻转0 垂直翻转-1 水平和垂直都翻转
Mat result;
// flip the image
flip(image,result,1); // positive for horizontal
// 0 for vertical,
// negative for both
// display result
namedWindow("Output Image");
imshow("Output Image", result);
waitKey(10);
// write image on file
imwrite("F:\\output.bmp", result);//保存图像,和matlab操作一样
// 复制一个新的数组
Mat image3;// 测试复制函数
result.copyTo(image3); // a new copy is created
// flip vertically this time
flip(result,result,0);
// display result
namedWindow("image 3");
imshow("image 3", image3);
// 调用自己生成的灰度函数
Mat gray= function();
// display result
namedWindow("Gray Image");
imshow("Gray Image", gray);
waitKey(200);
fprintf(stderr, "we have load image %s\n", imagename);
waitKey();
return 0;
}
本部分实现的功能包括:
/******************************************************************************************
1-- 读取图像的高度和宽度--很有必要建议学习一下Matlab,很相似的
方法1:
cout<< "size: "<< image.cols << " , "<< image.rows << endl;// 方法
方法2:
cout << "size: " << image.size().height << " , "<< image.size().width << endl;
2 复制图像
image=img;// 如果我们对image 进行操作的时候,img 数据也会改变。在opencv中image和img指向
了同一块内存区域,opencv并没有给image重新分配一块内存区域。
3--图像翻转
flip(image,result,1); // positive for horizontal
// 参数 1-- 水平翻转 0--垂直翻转 负数--- 水平和垂直都翻转
4--图像保存
imwrite("F:\\output.bmp", result);//保存图像,和matlab操作一样
5--调用复制函数copyTo
result.copyTo(image3); // a new copy is created
(1)解释:重要
Mat newImage=Image;
如果我们对newImage进行修改或操作,则会直接影响Image图像,因为newImage与Image共用了数据内容。
想要真正得到一个副本可以这样做:
Mat newImage;Image.copyTo(newImage);// 方法一
Mat newImage=image.clone();//方法二
(2)很多时候,我们并不想得到原图像的复制,但是要创建一个跟原图像大小相同的图像。
下面的代码可以完成 这 样的功能。
Mat newImage;
newImage.create(Image.size(),Image.type());
6--调用函数,显示一幅人为生成的灰度图像
**************************************************************************************/
/*******************************************************
时间:2014年11月27日22:37:00
整理:天空之恋
运行环境:VS2008+OpenCV2.3.1+Win7
运行问题:编译通过、运行成功
参考:OpenCV.2.Computer.Vision.Application.Programming.Cookbook配套例程,但是
有些东西是自己修改的。这本书和配套例程CSDN上面有免费分享的,没有的朋友可以去
我的网盘下载:http://pan.baidu.com/s/1hqEbDDa
*****************************************************/
#include "stdafx.h"
#include<iostream>
#include <opencv2/opencv.hpp>
using namespace std;// 使用STD
using namespace cv;// 使用名字空间
/*
显示灰度图像
下面的代码创建了一个灰度图像,大小是*240,图像上每个点的数据类型是无符号位的,并用填充所有像素点。
你可以把CV_8U换成CV_8U3来创建一个三通道的彩色图像。或者用CV_16U创建无符号位的。
*/
Mat function() {
// create image
Mat ima(240,320,CV_8U,cv::Scalar(100));
// return it
return ima;
}
int main(int argc, char* argv[])
{
const char* imagename = "F:\\house.jpg";
Mat image;//读入之前
cout << "size: " << image.size().height << " , "<< image.size().width << endl;//没有赋值之前是0
//从文件中读入图像
Mat img = imread(imagename);//这个地方类似matlab,在这个地方我要好好学习了
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//1--- 输出高度和宽度
image=img;
//cout<< "size: "<< image.cols << " , "<< image.rows << endl;// 方法
cout << "size: " << image.size().height << " , "<< image.size().width << endl;
//2显示图像
//namedWindow("第一个Opencv测试程序");
imshow("第一个Opencv测试程序", img);
//此函数等待按键,按键盘任意键就返回
//声明另外一个矩阵存储处理之后的图片,调用Flip来水平翻转图像
// 参数水平翻转0 垂直翻转-1 水平和垂直都翻转
Mat result;
// flip the image
flip(image,result,1); // positive for horizontal
// 0 for vertical,
// negative for both
// display result
namedWindow("Output Image");
imshow("Output Image", result);
waitKey(10);
// write image on file
imwrite("F:\\output.bmp", result);//保存图像,和matlab操作一样
// 复制一个新的数组
Mat image3;// 测试复制函数
result.copyTo(image3); // a new copy is created
// flip vertically this time
flip(result,result,0);
// display result
namedWindow("image 3");
imshow("image 3", image3);
// 调用自己生成的灰度函数
Mat gray= function();
// display result
namedWindow("Gray Image");
imshow("Gray Image", gray);
waitKey(200);
fprintf(stderr, "we have load image %s\n", imagename);
waitKey();
return 0;
}
相关文章推荐
- OpenCV2计算机视觉应用编程手册(自学版)初级七
- OpenCV2计算机视觉应用编程手册(自学版)初级四
- OpenCV2计算机视觉应用编程手册(自学版)初级五
- OpenCV2计算机视觉应用编程手册(自学版)初级六
- OpenCV2计算机视觉应用编程手册(自学版)初级三
- OpenCV2计算机视觉应用编程手册(自学版)初级一
- 学习《OpenCV 2 计算机视觉编程手册》第二章---使用指针遍历图像案例
- 学习《OpenCV 2 计算机视觉编程手册》第二章存取像素值案例--椒盐噪声
- 《Opencv 2计算机视觉编程手册 》学习笔记 1
- 学习《OpenCV 2 计算机视觉编程手册》第二章遍历图像和领域操作实例——对图像进行锐化
- 《OpenCV2 计算机视觉编程手册》视频处理三
- opencv2 计算机视觉编程手册 estimateF.cpp
- [OpenCv2 计算机视觉编程手册] 第六章 图像滤波
- OpenCV计算机视觉编程Python版
- OpenCV2计算机编程手册(二)基于类的图像处理
- OpenCV2计算机编程手册(一)操作像素
- 《OpenCV2 计算机视觉编程手册》视频处理一
- 计算机视觉——OpenCV中的SIFT(应用)
- 《OpenCV2 计算机视觉编程手册》视频处理二
- cv::Exception at memory location 0x0040F0D4 opencv计算机视觉编程手册第九章