opencv运用ROI的程序,不太懂,求讲解,最好详细点
#include<cv.h>#include<highgui.h>//ch3_ex3_12image_namexywidthheightadd#intmain(intar...
#include <cv.h>
#include <highgui.h>
// ch3_ex3_12 image_name x y width height add#
int main(int argc, char** argv)
{
IplImage* src;
cvNamedWindow("Example3_12_pre", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Example3_12_post", CV_WINDOW_AUTOSIZE);
if( argc == 7 && ((src=cvLoadImage(argv[1],1)) != 0 ))
{
int x = atoi(argv[2]);
int y = atoi(argv[3]);
int width = atoi(argv[4]);
int height = atoi(argv[5]);
int add = atoi(argv[6]);
cvShowImage( "Example3_12_pre", src);
cvSetImageROI(src, cvRect(x,y,width,height));
cvAddS(src, cvScalar(add),src);
cvResetImageROI(src);
cvShowImage( "Example3_12_post",src);
cvWaitKey();
}
cvReleaseImage( &src );
cvDestroyWindow("Example3_12_pre");
cvDestroyWindow("Example3_12_post");
return 0;
} 展开
#include <highgui.h>
// ch3_ex3_12 image_name x y width height add#
int main(int argc, char** argv)
{
IplImage* src;
cvNamedWindow("Example3_12_pre", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Example3_12_post", CV_WINDOW_AUTOSIZE);
if( argc == 7 && ((src=cvLoadImage(argv[1],1)) != 0 ))
{
int x = atoi(argv[2]);
int y = atoi(argv[3]);
int width = atoi(argv[4]);
int height = atoi(argv[5]);
int add = atoi(argv[6]);
cvShowImage( "Example3_12_pre", src);
cvSetImageROI(src, cvRect(x,y,width,height));
cvAddS(src, cvScalar(add),src);
cvResetImageROI(src);
cvShowImage( "Example3_12_post",src);
cvWaitKey();
}
cvReleaseImage( &src );
cvDestroyWindow("Example3_12_pre");
cvDestroyWindow("Example3_12_post");
return 0;
} 展开
1个回答
展开全部
ROI就是感兴趣区域,在一幅图像上你对那一块图老歼像感兴趣就只对感兴趣的这一块区域进行处理。那么怎么得到感兴侍链冲趣区域呢,就要用cvSetImageROI在图像上标唤猛定感兴趣区域,以后在对src进行的处理实质都是仅对src上这个ROI区域做的处理, 处理完成后一定要记得释放设置的感兴趣区域。
更多追问追答
追问
我是问这个程序的意思,最好精确到每句
追答
int main(int argc, char** argv)
{
IplImage* src; // 定义源图像
cvNamedWindow("Example3_12_pre", CV_WINDOW_AUTOSIZE); // 创建图像显示窗口
cvNamedWindow("Example3_12_post", CV_WINDOW_AUTOSIZE);
if( argc == 7 && ((src=cvLoadImage(argv[1],1)) != 0 )) // 引入源图像
{
int x = atoi(argv[2]); // atoi()函数功能是将字符串转换为整型数
int y = atoi(argv[3]);
int width = atoi(argv[4]);
int height = atoi(argv[5]);
int add = atoi(argv[6]);
cvShowImage( "Example3_12_pre", src); // 显示原图
cvSetImageROI(src, cvRect(x,y,width,height)); // 在原图上设定感兴趣区域
cvAddS(src, cvScalar(add),src); // 把src的元素与常量add相加放到src里
cvResetImageROI(src); // 释放感兴趣区域
cvShowImage( "Example3_12_post",src); // 显示处理后图像
cvWaitKey();
}
cvReleaseImage( &src ); //释放图像
cvDestroyWindow("Example3_12_pre");// 销毁窗口
cvDestroyWindow("Example3_12_post");
return 0;
}
苏州千视通视觉科技股份有限公司_
2024-11-04 广告
2024-11-04 广告
千视通是国内第一梯队推出多模态AI大模型网关和边缘大模型一体机产品方案的领先AI企业。 拥有行业领先的多模态视觉语言大模型技术,践行“Make high-quality AI quickly”理念,平台基于多模态预训练,支持用户自定义算法可...
点击进入详情页
本回答由苏州千视通视觉科技股份有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询