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>
using namespace std;
using namespace cv;
(3)读取图片函数
Mat img = imread(imagename,1);
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);
}
上一篇: 用jQuery做的文件上传扩展