• Open Source Computer Vision Library

图像文件读入和显示

Wikipedia,自由的百科全书

(修订版本间差异)
08:54 2010年6月30日的修订版本
Thomascatlee (Talk | 贡献)
从2.1版本开始,openCV不再支持原来的基于SWIG的Python接口,采用了新的Python接口,直接import cv即可包含openCV的各模块,函数名称前也不再有cv前缀
← Previous diff
14:01 2010年9月8日的修订版本
Pebblerchung (Talk | 贡献)

Next diff →
第 40行: 第 40行:
#[http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=5164&start=0&st=0&sk=t&sd=a 无法打开图片,C语言字符串问题] #[http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=5164&start=0&st=0&sk=t&sd=a 无法打开图片,C语言字符串问题]
#[http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=4246&start=0&st=0&sk=t&sd=a&hilit=cvloadimage+unicode unicode的问题,导致图片无法打开] #[http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=4246&start=0&st=0&sk=t&sd=a&hilit=cvloadimage+unicode unicode的问题,导致图片无法打开]
 +
 += C++语言版本 based on OpenCV 2.1 =
 +<source lang="cpp">
 +/***********************************************************************
 + * 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;
 +}
 +</source>
 +
 +==C++版本的好处==
 +#在于可以尽量避免使用指针这种危险的东西了。
 +#另一个好处便在于,不用费心去release资源了,因为在其destructor里面,系统会自动帮你搞定。
= Python版本 = = Python版本 =

14:01 2010年9月8日的修订版本

来自于仕琪的讲稿《使用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 );读取彩色图

论坛常见问题

  1. 如果你对main函数的参数 argc argv 不了解,请看Main函数参数argc,argv说明
  2. 无法打开图片,C语言字符串问题
  3. 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++版本的好处

  1. 在于可以尽量避免使用指针这种危险的东西了。
  2. 另一个好处便在于,不用费心去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)
Views
Personal tools