例3-12opencv设置ROI感兴趣区域

本文通过一个具体的OpenCV C++示例程序,详细解析了如何定义图像的感兴趣区域(ROI),并在此基础上进行基本的图像增强操作,包括区域亮度调整等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面说了一堆,也不知道啥用,感觉也没说清楚,可能确实需要一些例子来显性表示一下,或者他们在当初出版书籍针对的人群已经有了对图像的基本认识,然而自己还是没有建立起来,往后看看吧,希望能比较清楚的自己处理一些图像,知道一些如是能对某个像素的某个通道的值进行改变那么很多问题就变得简单,我想,开始的例子应该也是这里,但是没有所见即所得的即触感,感觉……很生硬。

 

3-12这个例子也很坑,

所以自己简单整理了一下。

要输入7个参数。这个对于c c++的要求还是比较高的。atoi函数也比较高级。所以能不能继续像前面一样,把例程跑起来,然后在例程的基础之上完成对知识点的讲解。

 

先上例程:

#include "highgui.h"
#include "cv.h"

int main(){

    IplImage* src;
    src = cvLoadImage("1.png");
    cvNamedWindow("e3", 1);//0是可变大小,1是固定大小且与内容适配
    int x = 100;
    int y = 100;
    int width = 50;
    int height = 50;
    int add = 100;

    cvSetImageROI(src, cvRect(x, y, width, height));
    cvAddS(src, cvScalar(add), src);
    cvResetImageROI(src);
    
    cvShowImage("e3", src);
    cvWaitKey(0);

    return 0;
}

这样做的好处是,避免了到cmd命令行中,手敲内容。少了很多的学习代价,比如每次看到主函数参数,就很让人头疼。所以这里面又把不相干的去掉了,如果为了得到书上的代码可以参考这个同学的笔记:

http://blog.youkuaiyun.com/shangyt/article/details/5747017

然后不小心看到回复了,发现这样做还是有点儿必要的。

首先要保证运行目录下面有1.png.然后直接执行就可以了:

 

的确是有一个小篮矩形。

 

 

 

根据前面的学习经验,这里需要理解的就只是cvSetImageROI(src, cvRect(x, y, width, height));

 

cvAddS(src, cvScalar(add), src); cvResetImageROI(src); 这三行,书上又描述了cvSetImageROIcvResetImageROI() 所以不理解的就只有cvAddS()了。

 

 

 

从函数的名字大概知道是计算机视觉设置图片ROI 跟重置图片ROI。然后传参数就可以了。那么ROI:(这书上也没给,倒是给了个相近的概念COI,所以还是母语是英语有点儿好处的,要不然人家的东西就看不懂,所以换句话说,如果我们足够发达在某些地方占有一席之地,然后我们也做了很多需要别人学的内容,这样别人会感慨要是母语是汉语就好了。)好了ROIregion of interestCOIChannel of interest。分别代表感兴趣区域,感兴趣通道。嗯,其实就是侧重区域,跟侧重通道。对于一整幅图像来说,/*【看看之前发的fps的相关内容,就知道,】比如1920*1080的。就是这么多个像素点。picture Element 简写作 pixel。每个颜色有RGB加和而成。假设每个颜色是8位,0-255。也就是一个点要3个字节。所以一共是1920*1080*3个字节,要看电影每秒要24帧。才能让静态播放的图片让人感觉起来不卡顿。也就是每秒要处理1920*1080*3*24个字节,这还只是理论上实际上要更大。有的显示器可能液晶的每秒是60帧,阴极射线管(CRT)要到每秒75帧以上,打游戏肯定不能满足于每秒24帧,打个lol怎么也要到60fpsframes per second),所以处理的数据量是十分巨大的,所以在有了cpu之后图像太费处理器了,干脆就有了gpu,集成显卡不好使,就又多了独立显卡,都是因为图像的处理十分耗费资源,所以。*/如果能只对某一部分进行处理的话,就会好很多,这样就出现了侧重区域,和侧重通道。

 

上题例程中我们给了一个侧重区域,以图像左上方为原点,水平方向为x轴,沿右侧方向为正方向,垂直方向为y轴,向下为正方向。(100,100)点为原点。一个50*50像素的正方形被画出。这个区域就是我们的感兴趣区域。

 

 

 

然后,设想是不是其他形状的ROI也被支持。按F12

 

/* Sets image ROI (region of interest) (COI is not changed) */

 

CVAPI(void)  cvSetImageROI( IplImage* image, CvRect rect );

 

发现只有矩形区域被支持。

 

 

 

然后看增强函数;这个cvAddS(src,cvScalar(add),src);

 

然后开始试这几个参数:

 

发现 分别是bgr,最后一个参数,不得而知,难道是透明度?好像不是,先不管。总之前面几个都是颜色的不同通道值。

 

cvAddS(src, cvScalar(-255,-255,-255,0.5), src);

 

这样让目标区域全黑

 

cvAddS(src, cvScalar(255,255,255,0.5), src);

 

这样让目标区域全白

 

 

 

有了add必然应该有减法,所以看到了sub估计就跑不远了。

 

cvSubS(src, cvScalar(255,255,255,0.5), src);

 

这样让目标区域全黑,因为每个通道的值减到0以下,就会按全黑显示。

 

转载于:https://www.cnblogs.com/letben/p/5420494.html

内容概要:该论文探讨了一种基于粒子群优化(PSO)的STAR-RIS辅助NOMA无线通信网络优化方法。STAR-RIS作为一种新型可重构智能表面,能同时反射和传输信号,与传统仅能反射的RIS不同。结合NOMA技术,STAR-RIS可以提升覆盖范围、用户容量和频谱效率。针对STAR-RIS元素众多导致获取完整信道状态信息(CSI)开销大的问题,作者提出一种在不依赖完整CSI的情况下,联合优化功率分配、基站波束成形以及STAR-RIS的传输和反射波束成形向量的方法,以最大化总可实现速率并确保每个用户的最低速率要求。仿真结果显示,该方案优于STAR-RIS辅助的OMA系统。 适合人群:具备一定无线通信理论基础、对智能反射面技术和非正交多址接入技术感兴趣的科研人员和工程师。 使用场景及目标:①适用于希望深入了解STAR-RIS与NOMA结合的研究者;②为解决无线通信中频谱资源紧张、提高系统性能提供新的思路和技术手段;③帮助理解PSO算法在无线通信优化问题中的应用。 其他说明:文中提供了详细的Python代码实现,涵盖系统参数设置、信道建模、速率计算、目标函数定义、约束条件设定、主优化函数设计及结果可视化等环节,便于读者理解和复现实验结果。此外,文章还对比了PSO与其他优化算法(如DDPG)的区别,强调了PSO在不需要显式CSI估计方面的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值