OpenCV2计算机视觉应用编程手册(自学版)初级二

本文介绍了使用OpenCV2进行图像处理的基本操作,包括读取图像尺寸、图像复制、翻转、保存等实用技巧,并展示了如何创建并显示灰度图像。

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配套例程,但是

有些东西是自己修改的。这本书和配套例程优快云上面有免费分享的,没有的朋友可以去

我的网盘下载: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.计算机视觉简介、环境准备(python, ipython) │ computer vsion.pdf │ CS231 introduction.pdf │ ├─2.图像分类问题简介、kNN分类器、线性分类器、模型选择 │ 2. 图像分类简介、kNN与线性分类器、模型选择.mp4 │ 2.初识图像分类.pdf │ ├─3.再谈线性分类器 │ 3.再谈线性分类器.mp4 │ 再谈线性分类器.pdf │ ├─4.反向传播算法和神经网络简介 │ .反向传播算法和神经网络简介.pdf │ 4. 反向传播算法和神经网络简介.mp4 │ ├─5.神经网络训练1 │ 5.-神经网络训练1.pdf │ 5.神经网络训练1.mp4 │ ├─6.神经网络训练2、卷积神经网络简介 │ 6.神经网络训练2.mp4 │ 神经网络训练2.pdf │ ├─7.卷积神经网络 │ 7.卷积神经网络.mp4 │ Lession7.pdf │ ├─8.图像OCR技术的回顾、进展及应用前景 │ 8.图像OCR技术的回顾、进展及应用前景.mp4 │ PhotoOCR_xbai.pdf │ └─9.物体定位检测 物体定位检测.pdf │ ├─10.卷积神经网络可视化 │ .卷积神经网络可视化.pdf │ 10.卷积神经网络可视化.mp4 │ ├─11.循环神经网络及其应用11.循环神经网络及其应用.mp4 │ 循环神经网络.pdf │ ├─12.卷积神经网络实战 │ 12.卷积神经网络训练实战.mp4 │ 卷积神经网络实战.pdf │ ├─13.常见深度学习框架介绍 │ 常见深度学习框架介绍.pdf │ ├─14.图像切割 │ 14.图像切割.mp4
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值