之前已经使用过图像载入了,这里再讲述一下其他的一些tip。

先来一次普通的载入:

#include <cv.h>
#include <highgui.h> int main(int argc, char **argv)
{
IplImage *image = cvLoadImage(argv[1]);
//CV_WINDOW_AUTOSIZE == 1
cvNamedWindow(argv[1], CV_WINDOW_AUTOSIZE); cvShowImage(argv[1], image);
cvWaitKey(0);
cvDestroyWindow(argv[1]);
cvReleaseImage(&image); return 0;
}

这里要注意,这个窗口大小是不可以改变的,下面再修改代码:

gedit ./modules/highgui/include/opencv2/highgui/highgui_c.h

发现:

    //These 2 flags are used by cvNamedWindow and cvSet/GetWindowProperty
CV_WINDOW_NORMAL = 0x00000000, //the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
CV_WINDOW_AUTOSIZE = 0x00000001, //the user cannot resize the window, the size is constrainted by the image displayed
CV_WINDOW_OPENGL = 0x00001000, //window with opengl support
#include <cv.h>
#include <highgui.h> int main(int argc, char **argv)
{
IplImage *image = cvLoadImage(argv[1]);
//CV_WINDOW_AUTOSIZE == 1
//CV_WINDOW_NORMAL == 0
cvNamedWindow(argv[1], <strong>CV_WINDOW_NORMAL</strong>); cvShowImage(argv[1], image);
cvWaitKey(0);
cvDestroyWindow(argv[1]);
cvReleaseImage(&image); return 0;
}

这样就可以随便拖放大小了(右下角的地方拖拽)

然后再加料:

#include <cv.h>
#include <highgui.h> int main(int argc, char **argv)
{
IplImage *image = cvLoadImage(argv[1]);
//CV_WINDOW_AUTOSIZE == 1
//CV_WINDOW_NORMAL == 0
cvNamedWindow(argv[1], CV_WINDOW_NORMAL); cvShowImage(argv[1], image); <strong> cvResizeWindow(argv[1], 200, 100);</strong> cvWaitKey(0);
cvDestroyWindow(argv[1]);
cvReleaseImage(&image); return 0;
}

这里在代码里面设置了大小,不用亲手操刀了。

继续加料:

#include <cv.h>
#include <highgui.h> int main(int argc, char **argv)
{
IplImage *image = cvLoadImage(argv[1]);
//CV_WINDOW_AUTOSIZE == 1
//CV_WINDOW_NORMAL == 0
cvNamedWindow(argv[1], CV_WINDOW_NORMAL); cvShowImage(argv[1], image); cvResizeWindow(argv[1], 200, 100); <strong> cvMoveWindow(argv[1], 500 ,500);</strong> cvWaitKey(0);
<strong> cvDestroyAllWindows();</strong>
cvReleaseImage(&image); return 0;
}

这里需要自己体验一下,将图像窗口移动到屏幕某个地方,而且关闭窗口可以批量关闭。

接下来是关于图像形式的操作:

#include <cv.h>
#include <highgui.h> int main(int argc, char **argv)
{
IplImage *image = cvLoadImage(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
//CV_WINDOW_AUTOSIZE == 1
//CV_WINDOW_NORMAL == 0
cvNamedWindow(argv[1], CV_WINDOW_NORMAL); cvShowImage(argv[1], image); cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&image); return 0;
}

变黑白了,实际上是被转成了单通道,但是没有偏蓝偏绿,估计是进行了彩色到灰度的转换,详情还要看代码:

enum
{
/* 8bit, color or not */
CV_LOAD_IMAGE_UNCHANGED =-1,
/* 8bit, gray */
CV_LOAD_IMAGE_GRAYSCALE =0,
/* ?, color */
CV_LOAD_IMAGE_COLOR =1,
/* any depth, ? */
CV_LOAD_IMAGE_ANYDEPTH =2,
/* ?, any color */
CV_LOAD_IMAGE_ANYCOLOR =4
};

    // CoreGraphics will take care of converting to grayscale and back as long as the
// appropriate colorspace is set
if( color == CV_LOAD_IMAGE_GRAYSCALE )
{
colorSpace = CGColorSpaceCreateDeviceGray();
bpp = 1;
alphaInfo = kCGImageAlphaNone;
}

暂时没找到此函数的内部定义。

Opencv step by step - 图像载入的更多相关文章

  1. 【OpenCV】OpenCV2.4.6 与Visiual Studio 2008,Python2.7.5配置和图像载入显示

    自从OpenCV2.2开始,OpenCV 库便分成几个模块并位于lib文件中,本节介绍从OpenCV2.4.6与VS2008 .Python2.7.5如何配置环境,如何外部文件载 入图像.在窗口中显示 ...

  2. OpenCV图像载入、显示和输出到文件以及滑块的使用

    图像载入 imread()函数 Mat imread(const string& filename, int flags = 1); 第一个参数为文件名 第二个参数为载入标识 flags &g ...

  3. OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图

    图像载入.显示.保存函数: 1         图像载入函数:imread()   Mat imread(const string& filename, int flags=1); const ...

  4. 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 2.Programming assignments:Convolutional Model: step by step

    Convolutional Neural Networks: Step by Step Welcome to Course 4's first assignment! In this assignme ...

  5. Neural Networks and Deep Learning(week4)Building your Deep Neural Network: Step by Step

    Building your Deep Neural Network: Step by Step 你将使用下面函数来构建一个深层神经网络来实现图像分类. 使用像relu这的非线性单元来改进你的模型 构建 ...

  6. openCV学习——一、图像读取、显示、输出

    openCV学习——一.图像读取.显示.输出   一.Mat imread(const string& filename,int flags=1),用于读取图片 1.参数介绍 filename ...

  7. 稀疏表示step by step(转)

    原文地址:稀疏表示step by step(转)作者:野火春风 稀疏表示step by step(1)     声明:本人属于绝对的新手,刚刚接触“稀疏表示”这个领域.之所以写下以下的若干个连载,是鼓 ...

  8. Step by step Dynamics CRM 2011升级到Dynamics CRM 2013

    原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...

  9. Step by Step 创建一个新的Dynamics CRM Organization

    原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...

随机推荐

  1. 在Myeclipse中添加User Library,用户自己的库

    在Myeclipse中添加User Library,用户自己的库 作用:可以将常用的jar包添加到一个固定的库中,避免每一次都要手动导入. 步骤: 1.选择项目,点击Myeclipse的window菜 ...

  2. 数据结构--树状数组(黑龙江省第八届大学生程序设计竞赛--post office)

    例题来源: 题目: 1468: Post office 题目描述 There are N(N<=1000) villages along a straight road, numbered fr ...

  3. 实验:sigsuspend(),sigprocmask()

    实验:sigsuspend(),sigprocmask() 源代码: /* * Program: pause_suspend.c * To test the difference between si ...

  4. 关于volatile和synchronized

    这个可能是最好的对比volatile和synchronized作用的文章了.volatile是一个变量修饰符,而synchronized是一个方法或块的修饰符.所以我们使用这两种关键字来指定三种简单的 ...

  5. Office文件上传自动生成缩略图

    来源:微信公众号CodeL 前不久产品经理提出一个X的需求,说上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给大家介绍一个简单 ...

  6. 【Android Demo】获取指定网页的页面源代码

    1.直接上效果图 2.代码 主要就是工具类HtmlService.java: import java.io.ByteArrayOutputStream; import java.io.InputStr ...

  7. 深度优先搜索 codevs 1064 虫食算

    codevs 1064 虫食算 2004年NOIP全国联赛提高组  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 所 ...

  8. tarjan算法求割点cojs 8

    tarjan求割点:cojs 8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网 ...

  9. Could not open INSTALL.LOG file

    今天卸载MailEnable时弹出这个提示,用360这样的工具卸载问题依旧,折腾了大半天没解决 UNWISE Could not open INSTALL.LOG file 本人有强迫症,虽然这个软件 ...

  10. 实习小记-python 内置函数__eq__函数引发的探索

    乱写__eq__会发生啥?请看代码.. >>> class A: ... def __eq__(self, other): # 不论发生什么,只要有==做比较,就返回True ... ...