Opencv step by step - 图像载入
之前已经使用过图像载入了,这里再讲述一下其他的一些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 - 图像载入的更多相关文章
- 【OpenCV】OpenCV2.4.6 与Visiual Studio 2008,Python2.7.5配置和图像载入显示
自从OpenCV2.2开始,OpenCV 库便分成几个模块并位于lib文件中,本节介绍从OpenCV2.4.6与VS2008 .Python2.7.5如何配置环境,如何外部文件载 入图像.在窗口中显示 ...
- OpenCV图像载入、显示和输出到文件以及滑块的使用
图像载入 imread()函数 Mat imread(const string& filename, int flags = 1); 第一个参数为文件名 第二个参数为载入标识 flags &g ...
- OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图
图像载入.显示.保存函数: 1 图像载入函数:imread() Mat imread(const string& filename, int flags=1); const ...
- 课程四(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 ...
- Neural Networks and Deep Learning(week4)Building your Deep Neural Network: Step by Step
Building your Deep Neural Network: Step by Step 你将使用下面函数来构建一个深层神经网络来实现图像分类. 使用像relu这的非线性单元来改进你的模型 构建 ...
- openCV学习——一、图像读取、显示、输出
openCV学习——一.图像读取.显示.输出 一.Mat imread(const string& filename,int flags=1),用于读取图片 1.参数介绍 filename ...
- 稀疏表示step by step(转)
原文地址:稀疏表示step by step(转)作者:野火春风 稀疏表示step by step(1) 声明:本人属于绝对的新手,刚刚接触“稀疏表示”这个领域.之所以写下以下的若干个连载,是鼓 ...
- Step by step Dynamics CRM 2011升级到Dynamics CRM 2013
原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...
- Step by Step 创建一个新的Dynamics CRM Organization
原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...
随机推荐
- Dev Grid拖拽移动行
效果图 源码下载 拖拽时带行截图效果实现代码 /// <summary> /// 拖拽帮助类 /// </summary> public static class DragHe ...
- nim3取石子游戏 (威佐夫博弈)
http://www.cnblogs.com/jackge/archive/2013/04/22/3034968.html 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有 ...
- 为什么Erlang比C慢那么多倍?
Erlang 一直以慢“著称”,本文就来看看 Erlang 慢在什么地方,为什么比实现同样功能的 C 语言程序慢那么多倍.Erlang 作为一种虚拟机解释的语言,慢是当然的.不过本文从细节上分析为什么 ...
- DevExpress GridControl使用方法总结(转)
一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 (1).gridView.AddN ...
- loadrunner常用函数
1.关联函数:web_reg_save_param("session", "LB=value=", "RB=>", LAST);
- shell 脚本关键字&符号
shell概念 "shell"既是一种解释型编程语言,也是一个这种编程语言的解释器的名字 shell是解释型语言,就是解释器会一条一条的翻译每一条语句并执行,对比之下,C语言是编译 ...
- Linux系统之用户、群组和权限
一.用户管理 创建用户时,系统为用户分配一个唯一的编号UID,同时为用户创建一个同名的组,并为组分配一个编号GID,并把该用户加入该组中. 系统规定: uid: 0 特权用户 u ...
- POJ 2513 Colored Sticks(欧拉回路,字典树,并查集)
题意:给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的. 无向图存在欧拉路的充要条件为: ① 图是连通的: ② 所有节 ...
- httpclient访问网站时设置Accept-Encoding为gzip,deflate返回的结果为乱码的问题
近期迷恋上httpclient模拟各种网站登陆,浏览器中的开发者工具中查看请求头信息,然后照葫芦画瓢写到httpclient的请求中去,requestheader中有这么一段设置: Accept-En ...
- Storm集群的安装与测试
首先安装zookeeper集群,然后安装storm集群. 我使用的是centos 32bit的三台虚拟机. MachineName ip namenode 192.168.99.110 datanod ...