您的位置:首页 > 运维架构

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

2017-12-29 16:00 561 查看
开发环境: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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: