上一次介绍了多图像单窗口的使用,其中很重要甚至可以说是至关重要的一步就是cvSetimageROI函数以及其他函数配合使用的地方!代码如下(详细请参考“openCV入门----单窗口多图片显示”博客):
cvSetImageROI(DispImage, cvRect(x, y, (int)(w / scale), (int)(h / scale)));
// Resize the input image and copy the it to the Single Big Image
cvResize(img, DispImage);
// Reset the ROI in order to display the next image
cvResetImageROI(DispImage);
详细解释如下:
1>使用cvSetImageROI函数先将整个图像截取一部分作为你所感兴趣的矩形部分,也就是第N张图片所在的位置(其输入信息包括举行起始点坐标和长、宽),将这个区域赋给DispImage对象进行暂存;
2>使用cvResize函数将img对象按照DispImage(此时是你定义的感兴趣的区域)进行调整(包括图像和大小),使得两者相匹配。也就是说,此时img也就是ROI了,目标图片也就因此放置到了整张图像上去(注意:这里不是只调整大小,而且还调整了图像,两者相互匹配!!!!);
3>使用cvResetImageROI函数释放DispImage所暂存的ROI区域,方便下次继续操作。
以上就是详细地逻辑步骤!
那么我们可以来针对cvSetImageROI函数或者说是这一系列配套函数,做一个类似于图片截取的功能程序!
代码如下:
#include<iostream>
#include"cv.h"
#include"highgui.h"
#include"cxcore.h"
using namespace std;
/*
做一个类似于截图的程序
*/
int main()
{
// 隐藏 console 窗口
//#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
//首先载入一幅图像
IplImage* img = cvLoadImage("8.png");
//提取出img原图中的ROI区域作为“截图”区域
cvSetImageROI(img, cvRect(10, 10, 200, 200));
//创建一张空的新图像来承载ROI区域图像
IplImage* dst = cvCreateImage(cvSize(200,200),8,3);
cvResize(img, dst);
//cvCopy(img, dst);
//取消ROI区域设置,恢复img
cvResetImageROI(img);
//显示图像
cvNamedWindow("scr", CV_WINDOW_AUTOSIZE);
cvNamedWindow("dst", CV_WINDOW_AUTOSIZE);
cvShowImage("scr", img);
cvShowImage("dst", dst);
cvWaitKey(5000);
system("pause");
cvDestroyWindow("scr");
cvDestroyWindow("dst");
cvReleaseImage(&img);
cvReleaseImage(&dst);
return 0;
}
结果:
上述代码的具体设计思路正如上文所述的三个步骤,这里不再赘述!
一个简单的截图效果就出来了!
相关推荐
赠送jar包:opencv-4.5.5-1.5.7.jar; 赠送原API文档:opencv-4.5.5-1.5.7-javadoc.jar; 赠送源代码:opencv-4.5.5-1.5.7-sources.jar; 赠送Maven依赖信息文件:opencv-4.5.5-1.5.7.pom; 包含翻译后的API文档:...
OpenCV-MinGW-Build-OpenCV-4.5.0-with-contrib
赠送jar包:opencv-4.5.5-1.5.7.jar; 赠送原API文档:opencv-4.5.5-1.5.7-javadoc.jar; 赠送源代码:opencv-4.5.5-1.5.7-sources.jar; 赠送Maven依赖信息文件:opencv-4.5.5-1.5.7.pom; 包含翻译后的API文档:...
赠送jar包:opencv-4.5.1-1.5.5.jar; 赠送原API文档:opencv-4.5.1-1.5.5-javadoc.jar; 赠送源代码:opencv-4.5.1-1.5.5-sources.jar; 赠送Maven依赖信息文件:opencv-4.5.1-1.5.5.pom; 包含翻译后的API文档:...
opencv-3.4.4-android-sdk/sdk/build.gradle opencv-3.4.4-android-sdk/sdk/etc opencv-3.4.4-android-sdk/sdk/java
赠送jar包:opencv-4.5.1-1.5.5.jar; 赠送原API文档:opencv-4.5.1-1.5.5-javadoc.jar; 赠送源代码:opencv-4.5.1-1.5.5-sources.jar; 赠送Maven依赖信息文件:opencv-4.5.1-1.5.5.pom; 包含翻译后的API文档:...
OpenCvSharp-4.0.0-x86 C# Opencv开发
1.android 版的opencv-4.5.5 sdk; 2.含有opencv-contrib-4.5.5 扩展模块; 3.可以在android studio 中加载,通过java 层调用,也可以添加so库+头文件的方式在jni 层调用; 4.适用于arm64-v8a架构,即64bit cpu。
opencv3编程入门 勘误及配套源码 opencv3 OpenCV3-Intro-Book-Src-master
已编译好的opencv资源
OpenCvSharp-4.5.2-20210405.rar
KD-Tree 开源实现以及 OpenCV KD-Tree 使用
opencv-3.4.13-android-sdk .zip压缩包
opencv学习---运动目标(前景)检测
opencv-python 3.4.1.15 opencv-contrib-python 3.4.1.15 win64版,opencv-python 3.4.1.15 opencv-contrib-python 3.4.1.15,支持版本:python3.4,3.5,3.6
使用linux下Anaconda3 python36环境的opencv3 ,亲测可用 收取1个积分谢谢~~
opencv-4.6.0-android-sdk.zip
OpenCV341-MinGW-Build-x64-master.zip
OpenCV4.5.3-官网下载的Windows版本安装包解压安装文件
适用于Windows64位,对应Python 3.6版本,OpenCV为3.4.1.15版本;内含有《opencv_contrib_python-3.4.1.15-cp36-cp36m-win_amd64.whl》和《opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whl》两个文件