opencv 从原始的图像中找出ROI区域

本文介绍了如何使用OpenCV在图像中定义ROI区域,并展示如何计算并显示不同灰度区间内的直方图。通过实例演示了如何获取ROI区域图像和执行直方图计算,最后展示了如何利用直方图数据生成直观的图表。

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

http://blog.youkuaiyun.com/chentravelling/article/details/45331225

opencv 从原始的图像中找出ROI区域

#include <iostream>
#include <highgui.h>

using namespace std;
using namespace cv;

int main()
{
	IplImage *image = cvLoadImage("I:\\OpenCV Learning\\picture\\sumpalace.jpg");

	cvShowImage("image1",image);
	//将ROI区域图像保存在image中:左上角x、左上角y、矩形长、宽
	cvSetImageROI(image,cvRect(200,200,600,200));
	cvShowImage("imageROI",image);
	//执行cvSetImageROI()之后显示image图像是只显示ROI标识的一部分,即改变了指针image,
	//但是它仍旧保留有原来图像的信息,在执行这一句cvResetImageROI(image),之后,image指示原来的图像信息。
	cvResetImageROI(image);
	cvShowImage("image2",image);
	cvWaitKey(0);

	return 0;
}

http://www.cnblogs.com/ronny/p/opencv_road_4.html

不均匀直方图,我们分别统计0-50,50-80,80-150,150-230,230-255区间的灰度分布:

int main()
{
    Mat Image=imread("../cat.png");
    cvtColor(Image,Image,CV_BGR2GRAY);

    const int channels[1]={0};
    int histSize[1]={5};
    float hranges[6]={0,50,80,150,230,255};
    const float* ranges[1]={hranges};

    MatND hist;
    calcHist(&Image,1,channels,Mat(),hist,1,histSize,ranges,false);

    return 0;
}

直方图的显示

从上面的例子中我们可以看出,直方图计算得到的实际上是一个多维数组,这并不够直观,我们希望能够像在Excel中把相关数据通过表的形式表示出来。

下面通过划线函数来把一个灰度直方图显示出来:

Mat getHistImg(const MatND& hist)
{
    double maxVal=0;
    double minVal=0;

    //找到直方图中的最大值和最小值
    minMaxLoc(hist,&minVal,&maxVal,0,0);
    int histSize=hist.rows;
    Mat histImg(histSize,histSize,CV_8U,Scalar(255));
    // 设置最大峰值为图像高度的90%
    int hpt=static_cast<int>(0.9*histSize);

    for(int h=0;h<histSize;h++)
    {
        float binVal=hist.at<float>(h);
        int intensity=static_cast<int>(binVal*hpt/maxVal);
        line(histImg,Point(h,histSize),Point(h,histSize-intensity),Scalar::all(0));
    }

    return histImg;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值