之前已经使用过图像载入了,这里再讲述一下其他的一些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. Windows下HG服务器的搭建

    1.环境和所需工具安装 1. 安装python-2.7.9.exe 2. 安装mercurial-3.2.3.win32-py2.7.exe 3. 安装mercurial-3.2.3-x86.msi ...

  2. Android多进程需要注意的一个地方

    可能很多项目都会有一个自定义的Application,做一些初始化操作以及全局化的一些数据保存,这时如果程序中定义了远程服务(android:process=":remote"), ...

  3. javascript元素绑定事件

    js元素绑定事件   想给一个元素绑定一个方法之后,在绑定一个方法而且不被覆盖 window.onload = function () { alert('a'); } window.onlaod=fu ...

  4. C/C++ 动态存储分配

    C语言的动态分配函数: malloc(m):开辟m字节长度的地址空间,并返回这段空间的首地址 sizeof(x):计算变量x的长度 free(p):释放指针p所指变量的存储空间,即彻底删除一个变量 C ...

  5. 10个值得深思的PHP面试问题

    本文所罗列的问题虽然看似简单,但是每个背后都涵盖了一个或几个大家容易忽视的基础知识点,希望能够帮助到你的面试和平时工作. Q1 第一个问题关于弱类型 $str1 = 'yabadabadoo'; $s ...

  6. windows下 MySQL数据库双向同步 配置步骤

          最近在项目中遇到了要实现服务器上MySql数据双向同步,在网上找了很多资料,但是大部分都是在liux系统下配置的, 而且都是互相转载,没有一个详细的步骤,于是决定写一个windows系统下 ...

  7. [转]Highcharts仪表盘制作

    http://www.runoob.com/highcharts/highcharts-guage-solid.html 本文转自:http://blog.csdn.net/javaliuzhiyue ...

  8. Hadoop 2.0中单点故障解决方案总结

    Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题, ...

  9. Web性能优化之图片延迟加载

    来源:微信公众号CodeL 对于一些图片多,页面长的网页来说,如果每次打开页面加载全部的网页内容,页面加载速度势必会受到影响,如果每次打开网页只将网页可视区域的内容加载给用户 ,将大大提高网页浏览速度 ...

  10. Ubuntu 14.04 LTS Server 无法挂载光盘 启动initramfs等问题

    今天需要在戴尔R410服务器上装64位的Linux,师兄给了个14.04的server 64位镜像.一开始打算用U盘安装,用软碟通烧写镜像之后,在服务器端设置从U盘启动,但是安装到一半出现了光盘无法挂 ...