java 使用opencv屏幕上找小图位置 opencv如何显示图片

您所在的位置:网站首页 opencv找图片 java 使用opencv屏幕上找小图位置 opencv如何显示图片

java 使用opencv屏幕上找小图位置 opencv如何显示图片

2024-07-09 21:55| 来源: 网络整理| 查看: 265

OpenCV的第一个小程序-读取图像并显示

首先新建一个VC++控制台项目如下图所示。本文项目名称helloOpenCV。

在主文件中添加如下代码:

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

添加需要打开的图片到对应目录本文添加emouse.jpg文件。

编译运行,结果如下图所示。

========

OpenCV读取图像_显示图像和保存图像

配置好 OpenCV 以后,包含以下两个头文件:

#include "cv.h" #include "highgui.h" IplImage* image=cvLoadImage("D:\\123.jpg",-1); //函数cvLoadImage()的第1 个参数是图像文件的路径. //第2 个参数是读取图像的方式:-1 表示按照图像本身的类型来读取,1 表示强制彩色化,0 表示 //强制灰值化. if(image==NULL) { MessageBox("无法读取图像数据!", "提示",MB_OK);//在MFC 工程中这样用 //若在win32 控制台程序中,用printf("无法读取图像数据!\n"); return;//不作任何操作,就不会执行后面的程序了 } cvNamedWindow("图像显示",CV_WINDOW_AUTOSIZE); //该函数的功能是按照指定方式创建一个窗口,用于显示图像. //第1 个参数是窗口的名称,自己可以任意设置 //第2 个参数表示窗口的大小会自动根据图像尺寸而变化 cvShowImage("图像显示",image); //该函数的功能是在指定的窗口上显示图像. //第1 个参数是显示图像窗口的名称 //第2 个参数是要显示的图像 cvSaveImage("D:\\saveImage.jpg",image); //该函数的功能是将图像另存为 //第1 个参数是保存的路径,自己可以设置其它路径 //第2 个参数是要保存的图像 cvWaitKey(0);//一直等待按键没有这句的话图像不能正常显示 cvReleaseImage(&image);//释放图像内存 cvDestroyWindow("图像显示");//销毁窗口资源 //读取和显示完图像之后,要及时释放所占的内存资源.

运行示例:

========

初试牛刀-OpenCV显示图片

一、流程图

二、函数说明

1、cvLoadImage 打开图片函数

函数原型:

CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));

返回值类型:Ip1Image*

参数说明:

1)const char* filename 图片路径

注意:文件路径用“\\”而不是“\”

2)int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR) 图片打开方式,默认是CV_LOAD_IMAGE_COLOR,也就是以彩色形式打开,在OpenCV定义了一些打开方式的

宏,分别为:

宏定义

数值

代表的意义

#define CV_LOAD_IMAGE_UNCHANGED

-1

与原图保持不变

#define CV_LOAD_IMAGE_GRAYSCALE

0

灰度图像(单通道)

#define CV_LOAD_IMAGE_COLOR

1

彩色图像(3通道)(默认值)

#define CV_LOAD_IMAGE_ANYDEPTH

2

任意颜色深度

#define CV_LOAD_IMAGE_ANYCOLOR

4

任意颜色

注意:a、如果想打开方式为原图形式,也就是默认的,可以不用配置这个参数

b、如果想配置多个值时,用“|”号隔开,例如:“2 |4”

c、如果想要载入最真实的图片参数设置为CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR

综合以上说明,函数cvLoadImage就很容易理解,比如

IplImage* img = cvLoadImage(“D:\\lena.jpg”,0);// 以灰度形式打开“D:\lena.jpg”文件

2、cvNamedWindow 创建窗口函数

函数原型:

CVAPI(int) cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) )

返回值类型:int

参数说明:

1)const char* name 窗口的名字,是显示图片(cvShowImage)函数中参数

2)int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) 窗口大小设置,有两种设置,默认是CV_WINDOW_AUTOSIZE

参数值

意义

CV_WINDOW_AUTOSIZE

窗口大小和图片大小一样(默认值)

0

窗口固定大小,可以用鼠标调整窗口大小

3、cvShowImage

函数原型:CVAPI(void) cvShowImage( const char* name, const CvArr* image

);

返回值类型:void(无值)

参数说明:

1)const char* name 窗口名,也就是cvNameWindow中创建的窗口

2)const CvArr* image 图片地址指针,也就是cvLoadImage的返回值

4、cvWaitKey

函数原型:CVAPI(int) cvWaitKey(int delay CV_DEFAULT(0));

返回值:int

参数说明:int delay CV_DEFAULT(0)等待时间,单位是毫秒(ms),特殊的,当这个值小于或等于0时,表示等待键盘任意键退出

5、cvReleaseImage

函数原型:CVAPI(void) cvReleaseImage( IplImage** image );

参数说明:IplImage** image 也就是cvLoadImage的返回值的指针

6、cvDestroyWindow

函数原型:CVAPI(void) cvDestroyWindow( const char* name );

参数说明:const char* name,也就是cvNamedWindow所创建窗口名

三、实现代码

#include "stdafx.h" #include "highgui.h" int main(int argc, char* argv[]) { // 以灰度形式打开图片 IplImage* img = cvLoadImage("D:\\lena.jpg",0); // 创建一个名为“ShowImage1”,大小根据图片大小 cvNamedWindow("ShowImage1",CV_WINDOW_AUTOSIZE); // 显示图片 cvShowImage("ShowImage1",img); // 图片显示等待3秒 cvWaitKey(3000); // 释放图片内存 cvReleaseImage(&img); // 销毁窗口 cvDestroyWindow("ShowImage1"); return 0; } ==

======

OpenCV读取和显示图片

一、从文件读取图像并显示

1. 程序

#include #include using namespace cv; using namespace std; int main(int argc, const char** argv) { Mat img = imread("earth.jpg", CV_LOAD_IMAGE_UNCHANGED); if (img.empty()) { cout widthStep); unsigned char* brow = (unsigned char*)(b_img->imageData + y*b_img->widthStep); unsigned char* grow = (unsigned char*)(g_img->imageData + y*g_img->widthStep); unsigned char* rrow = (unsigned char*)(r_img->imageData + y*r_img->widthStep); for(x=0;xwidth;x++) { //将B通道 G通道 R通道的值 分别拷贝到3个单通道的图像中去 brow[x] = prow[3*x + 0] ; //拷贝B通道的值prow[3*x + 0] 到 单通道图像b_img grow[x] = prow[3*x + 1] ; //拷贝G通道的值prow[3*x + 0] 到 单通道图像b_img rrow[x] = prow[3*x + 2] ; //拷贝R通道的值prow[3*x + 0] 到 单通道图像b_img } } //创建3个窗口 cvNamedWindow("b"); cvNamedWindow("g"); cvNamedWindow("r"); //显示b g r三个通道的图像 cvShowImage("b" , b_img); cvShowImage("g" , g_img); cvShowImage("r" , r_img); //显示大图像 cvNamedWindow("1"); cvShowImage("1",img); //等待按键 cvWaitKey(0); //释放内存空间 cvReleaseImage(&img); return 0; }

========

OpenCV2 图像的载入与显示

OpenCV的接口包括C++,C,Python的

我用MinGW编译OpenCV2.1 和 OpenCV2.2 从未成功过

前几日发现 OpenCV 2.3发布,下载了自解压程序,解压后又visual studio 2008,2010和MinGW版的

但其中的MinGW版的是官方 MinGW的,我使用的是在 http://nuwen.net/mingw.html 下载的

编译程序连接时总出错,于是下载了源码包,编译后能正常使用

先来看看最简单的图像的载入与显示,使用C++接口

#include #include using namespace cv; int main(){ Mat image = imread("E:/Image/Lena.jpg"); namedWindow("MyPicture"); imshow("MyPicture",image); waitKey(0); return 0; }

========

opencv显示图像

#include "highgui.h" using namespace cv; using namespace std; int main() { IplImage *img = cvLoadImage("airplane.png"); cvNamedWindow("1"); cvShowImage("1",img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("1"); }

一些解释:

1.cvNamedWindow函数:

  cvNameWindow(“Example”,CV_WINDOW_AUTOSIZE);

    用于在屏幕上创建一个窗口,将被显示的图像包含于该窗口中

    第一个参数:窗口标题

    第二个参数:窗口的属性 默认为0(图像根据窗口的大小进行缩放)

2.cvLoadImage(const char * filename,int iscolor=1);

     有两个输入参数:

     第一个参数:图像路径

     第二个参数:iscolor默认值为1,显示彩色图像,iscolor设置为0,表示显示黑白图像。

========

在vs2012中用opencv显示图像

   如何用opencv2.44在VS2012中显示一幅彩色图像,并提取其灰度值,

VS2012+opencv2.44+win7.8

方法/步骤

1

第一步,这副图片是我们将要用来显示的图片

2

第二步,将相关库文件库加进去,包括利用opencv显示的库,

3

第三步,先要读入图片文件的地址,

然后将读入的地址给MAT类,读两次,一次给灰度图像用,另一次给彩色

图像用,下面用一个IF不判断出错的处理情况

4

第四步,创建显示窗口,前面参数是窗口名,后面的1表示图像不可缩放,创建一个灰度窗口和一个彩色窗口

5

第五步,将图像在创建的窗口中显示,第一参数是显示的窗口名,第二个参数是我们先读入的MAT图像,后面是按键返回

6

第六步,按上述代码完成后,成功显示图像

========



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3