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 ...
随机推荐
- 在Myeclipse中添加User Library,用户自己的库
在Myeclipse中添加User Library,用户自己的库 作用:可以将常用的jar包添加到一个固定的库中,避免每一次都要手动导入. 步骤: 1.选择项目,点击Myeclipse的window菜 ...
- 数据结构--树状数组(黑龙江省第八届大学生程序设计竞赛--post office)
例题来源: 题目: 1468: Post office 题目描述 There are N(N<=1000) villages along a straight road, numbered fr ...
- 实验:sigsuspend(),sigprocmask()
实验:sigsuspend(),sigprocmask() 源代码: /* * Program: pause_suspend.c * To test the difference between si ...
- 关于volatile和synchronized
这个可能是最好的对比volatile和synchronized作用的文章了.volatile是一个变量修饰符,而synchronized是一个方法或块的修饰符.所以我们使用这两种关键字来指定三种简单的 ...
- Office文件上传自动生成缩略图
来源:微信公众号CodeL 前不久产品经理提出一个X的需求,说上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给大家介绍一个简单 ...
- 【Android Demo】获取指定网页的页面源代码
1.直接上效果图 2.代码 主要就是工具类HtmlService.java: import java.io.ByteArrayOutputStream; import java.io.InputStr ...
- 深度优先搜索 codevs 1064 虫食算
codevs 1064 虫食算 2004年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 所 ...
- tarjan算法求割点cojs 8
tarjan求割点:cojs 8. 备用交换机 ★★ 输入文件:gd.in 输出文件:gd.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] n个城市之间有通讯网 ...
- Could not open INSTALL.LOG file
今天卸载MailEnable时弹出这个提示,用360这样的工具卸载问题依旧,折腾了大半天没解决 UNWISE Could not open INSTALL.LOG file 本人有强迫症,虽然这个软件 ...
- 实习小记-python 内置函数__eq__函数引发的探索
乱写__eq__会发生啥?请看代码.. >>> class A: ... def __eq__(self, other): # 不论发生什么,只要有==做比较,就返回True ... ...