图像文件读入和显示
Wikipedia,自由的百科全书
(修订版本间差异)
04:23 2012年3月8日的修订版本 Quarryman (Talk | 贡献) C++语言版本 based on OpenCV 2.3.1 ← Previous diff |
18:34 2012年4月9日的修订版本 Hongjucheng (Talk | 贡献) C++语言版本 based on OpenCV 2.3.1 Next diff → |
||
第 76行: | 第 76行: | ||
* By Quarryman 2012 | * By Quarryman 2012 | ||
***********************************************************************/ | ***********************************************************************/ | ||
+ | #include "stdafx.h" | ||
#include <string> | #include <string> | ||
#include <opencv2\opencv.hpp> | #include <opencv2\opencv.hpp> |
18:34 2012年4月9日的修订版本
来自于仕琪的讲稿《使用OpenCV进行图像处理》中的例程
目录 |
C语言版本
/*********************************************************************** * OpenCV example * By Shiqi Yu 2006 ***********************************************************************/ #include "cv.h" #include "highgui.h" int main( int argc, char** argv ) { IplImage* pImg; //声明IplImage指针 //载入图像 if( argc == 2 && (pImg = cvLoadImage( argv[1], 1)) != 0 ) { cvNamedWindow( "Image", 1 );//创建窗口 cvShowImage( "Image", pImg );//显示图像 cvWaitKey(0); //等待按键 cvDestroyWindow( "Image" );//销毁窗口 cvReleaseImage( &pImg ); //释放图像 return 0; } return -1; }
函数说明
cvLoadImage( filename, -1 ); 默认读取图像的原通道数
cvLoadImage( filename, 0 );强制转化读取图像为灰度图
cvLoadImage( filename, 1 );读取彩色图
论坛常见问题
- 如果你对main函数的参数 argc argv 不了解,请看Main函数参数argc,argv说明
- 无法打开图片,C语言字符串问题
- unicode的问题,导致图片无法打开
C++语言版本 based on OpenCV 2.1
/*********************************************************************** * OpenCV 2.1 example * By Pebbler Chung 2010 ***********************************************************************/ #include "cv.h" #include "highgui.h" using namespace cv; //下面的所有cv相关类型不用加上前缀了 int main(int argc, char* argv[]) { Mat img = imread("lena.jpg"); //声明Mat变量并调入lena小妞(老妞了现在?)的照片 if(!img.data) //判断图片调入是否成功 return -1; //调入图片失败则退出 namedWindow("loveLena", CV_WINDOW_AUTOSIZE); //创建窗口,并确定其为大小不可变类型窗口 imshow("loveLena", img); //显示图片。如果你不介意窗口大小可变,可以直接注释掉上一句。因为imshow可以直接创建窗口 waitKey(); //等待按键 return 0; }
C++语言版本 based on OpenCV 2.3.1
/*********************************************************************** * OpenCV 2.3.1 example * By Quarryman 2012 ***********************************************************************/ #include "stdafx.h" #include <string> #include <opencv2\opencv.hpp> using namespace cv; using namespace std; int main() { string imagename = "lena.jpg"; //读入图像 Mat img = imread(imagename); //如果读入图像失败 if(img.empty()) { return -1; } //创建窗口 namedWindow("image",1); //显示图像 imshow("image", img); //等待按键,按键盘任意键返回 waitKey(); return 0; }
C++版本的好处
- 在于可以尽量避免使用指针这种危险的东西了。
- 另一个好处便在于,不用费心去release资源了,因为在其destructor里面,系统会自动帮你搞定。
Python版本
# -*- coding:utf-8 -*- ########################################################### # OpenCV example # By ChaiShushan 2008 ########################################################### import sys # 导入OpenCV模块 from opencv.cv import * from opencv.highgui import * if __name__ == '__main__': if len(sys.argv) > 1: # 打开图像 image = cvLoadImage(sys.argv[1]) if not image: sys.exit(-1) # 创建窗口 cvNamedWindow ("mywin") # 显示图像 cvShowImage ("mywin", image) cvWaitKey (0)
注: Python版本由chai2010改写.
OpenCV 2.1 with Python 2.6 (use new interface)
# -*- coding:utf-8 -*- # mycv.py import sys # 导入OpenCV模块 import cv if __name__ == '__main__': # 打开图像 image = cv.LoadImage ("lena.jpg") # 创建窗口 cv.NamedWindow ("mywin") # 显示图像 cv.ShowImage ("mywin", image) cv.WaitKey (0)