欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

OpenCV基本操作-(1)读取和显示图片

程序员文章站 2022-03-20 17:00:03
...

开发环境:Opencv 2.4.9+ visual studio 2010

VS2010中配置OpenCV连接可参考:VS2010项目中的opencv连接配置


(1)包含头文件

#include "stdafx.h" 
#include <opencv2/opencv.hpp>


(2)使用OpenCV命名空间

using namespace std;
using namespace cv;

(3)读取图片函数

    Mat img = imread(imagename,1);


(4)显示图片函数

    imshow("image", img);


代码示例:

#include "stdafx.h" 
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
    const char* imagename = "C:\\Users\\john\\Desktop\\data.jpg";
 
    //从文件中读入图像
    Mat img = imread(imagename,1);
 
    //如果读入图像失败
    if(img.empty())
    {
        fprintf(stderr, "Can not load image %s\n", imagename);
        return -1;
    } 
    //显示图像
    imshow("image", img);
 
    //此函数等待按键,按键盘任意键就返回
    waitKey();
    return 0;
}


(5)在MFC的图形界面中将图片显示出来:使用的控件是 Picture Control控件

void CLeftFrom::VidaoImageToPicture(IplImage* image)    //显示图片到窗口 同时缩放图片适应窗口大小
{
	IplImage* vidaoimage;
	CvvImage cimage;
	CRect rect;                                          //定义矩形类
	CvSize czSize;               //目标图像尺寸 
	GetDlgItem(IDC_PICTURE1)->GetWindowRect(&rect);      //将窗口矩形选中到picture控件上
	//	vidaoimage = cvCreateImage( cvSize(rect.Width(),rect.Height()), 8, 3 );
	//计算目标图像大小  
	czSize.width = rect.Width();  
	czSize.height = rect.Height();
	vidaoimage = cvCreateImage(czSize, image->depth, image->nChannels);  
	cvResize(image, vidaoimage, CV_INTER_AREA);          //缩放图片大小

	//	cvSaveImage("SmallBmp.jpg", vidaoimage);             //保存小图片
	cimage.CopyOf(vidaoimage);
	int cx = cimage.Width();         //获取图片宽度 
	int cy = cimage.Height();        //获取图片高度 
	GetDlgItem(IDC_PICTURE1)->GetWindowRect(&rect);     //将窗口矩形选中到picture控件上 
	ScreenToClient(&rect);                              //将客户区选中到Picture控件表示的矩形区域内  
	GetDlgItem(IDC_PICTURE1)->MoveWindow(rect.left, rect.top, cx, cy, TRUE);//将窗口移动到Picture控 
	CWnd *pWnd=GetDlgItem(IDC_PICTURE1);                //获得pictrue控件窗口的句柄 
	pWnd->GetClientRect(&rect);                         //获得pictrue控件所在的矩形区域  
	CDC *pDC=pWnd->GetDC();                             //获得pictrue控件的DC   
	cimage.DrawToHDC(pDC->m_hDC, rect);                 //将图片画到Picture控件表示的矩形区域
	ReleaseDC(pDC);                                     //释放picture控件的DC

	cvReleaseImage(&vidaoimage);  
}