zoukankan      html  css  js  c++  java
  • Opencv step by step


    什么是ROI?ROI就是region of interest ,就是你感兴趣的图像部分,在图像处理中,可能同时要处理多个ROI。



    Opencv有ROI的API,但是只能同时处理一个(书本上说的,未验证)。


    下面给出一个实例:


    #include <cv.h>
    #include <highgui.h>
    
    int main(int argc,char **argv)
    {
    
    /*
     * 	CVAPI(IplImage*) cvLoadImage( const char* filename,
    		int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));
    
    
    	//dst(mask) = src(mask) + value 
    	CVAPI(void)  cvAddS( const CvArr* src, CvScalar value, CvArr* dst,
                         const CvArr* mask CV_DEFAULT(NULL));
    
    
     */
    	IplImage *src = cvLoadImage(argv[1],1);
    
    
    	cvNamedWindow("image input");
    	cvNamedWindow("image output");
    	cvShowImage("image input", src);	
    
    
    	cvSetImageROI(src,cvRect(100,100,100,100));
    	cvAddS(src, cvScalar(100), src);
    	cvResetImageROI(src);
    	cvShowImage("image output", src);
    
    	cvWaitKey();
    
    	cvReleaseImage(&src);
    	cvDestroyWindow("image input");
    	cvDestroyWindow("image output");
    
    	return 0;
    }

    关键函数是    cvSetImageROI(src,cvRect(100,100,100,100));


    这里在100,100像素点开始,设置了100,100的大小作为ROI。

    效果如下:


    可以看到右边出现了一个较蓝色的块。

    cvAddS(src, cvScalar(100), src); 就是起的这个作用。

    为什么是蓝色的呢?


    让我们将cvAddS(src, cvScalar(100), src);换成这一行试试看:

    	cvAddS(src, CV_RGB(100,0,0), src);


    蛤蛤,变红色了,再看一下它的定义:

    #define CV_RGB(r,g,b) cvScalar((b),(g),(r),0)。


    这样就明白了吧。只有蓝色的原因是只设置到了b=100,g和r都是0。.


    还有一个重要的一点,一定要使用cvResetImageROI,不然图像一直会在这个牢笼中无法自拔,变成这个样子:




    上面提到:

    Opencv有ROI的API,但是只能同时处理一个


    如果要批量处理的话,还是建议使用手动的方法吧(直接操作像素,你懂的)。

  • 相关阅读:
    Python web开发——自定义userprofile(用户描述)
    Python web 开发(1)——新建项目
    小白使用pycharm+ 安装Django
    创建独立的Python开发环境virtualenvwrapper
    创建一个独立的Python 开发环境 virtualenv
    简单的爬虫demo
    Python 输入和输出
    响应式网页设计
    WEB字体,多列布局和伸缩盒
    CSS变形
  • 原文地址:https://www.cnblogs.com/tanhangbo/p/4282612.html
Copyright © 2011-2022 走看看