精华内容
下载资源
问答
  • 今天小编就为大家分享一篇Python+OpenCV感兴趣区域ROI提取方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • [opencv笔记四]opencv roi

    千次阅读 2018-10-07 21:08:27
    roi 感兴趣的区域,可以减少数据处理量,或是用来截图。

    在图像处理领域,有一个非常重要的名词ROI。
    什么是ROI?
    它的英文全称是Region Of Interest,对应的中文解释就是感兴趣区域。
    感兴趣区域,就是我们从图像中选择一个图像区域,这个区域就是图像分析所关注的焦点。我们圈定这个区域,那么我们要处理的图像就从大图像变为一个小图像区域了,这样以便进行进一步处理,可以大大减小处理时间。
    1.首先在图片上将感兴趣区域框出来
    2.ROI提取出来,成为一幅单独图片
    3.利用感兴趣区域ROI实现图像叠加
    代码如下:

    Mat img = imread("C:\\Users\\joy\\Pictures\\1.jpg");
    if (!img.data)
    {
    	printf("读取原始图失败!");
    	getchar();
    	return -1;
    }
    //将感兴趣区域框出来//
    rectangle(img, Rect(1, 1, 200, 200), Scalar(255, 255, 0), 10);
    imshow("ROI", img);
    //Rect四个形参分别是:x坐标,y坐标,长,高;注意(x,y)指的是矩形的左上角点
    Mat roi = img(Rect(200, 200, 100, 300));
    imshow("roi", roi);
    //图像融合,指定区域添加logo
    double alphaValue = 0.5;
    double betaValue = 1.0 - alphaValue;
    Mat srcImage = imread("C:\\Users\\joy\\Pictures\\11.png");
    Mat logoroi = srcImage(Rect(200, 200, 100, 300));
    addWeighted(logoroi, alphaValue, roi, betaValue, 0, logoroi);
    imshow("srcImage", srcImage);
    
    展开全文
  • OpenCV不规则ROI提取

    2019-10-09 14:18:53
    提取不规则感兴趣区域 void anomalyRoi ( Mat & src , Mat & dst ) { Mat original = src . clone ( ) ; //高斯滤波 GaussianBlur ( original , original , Size ( 3 , 3 ) , 11 , 11 ,...

    提取不规则感兴趣区域

    void anomalyRoi(Mat &src, Mat &dst)
    {
    	Mat original = src.clone();
    	//高斯滤波
    	GaussianBlur(original, original, Size(3, 3), 11, 11, 4);
    	//灰度化
    	cvtColor(original, original, COLOR_RGB2GRAY);
    	//二值化
    	Mat threshold_image;
    	threshold(original, threshold_image, 90, 225, 3);
    
    	//形态学操作,Size的第个值是水平方向,第二值是垂直方向
    	Mat morphologyKernel = getStructuringElement(MORPH_RECT, Size(1, 3));
    	//闭运算
    	morphologyEx(threshold_image, threshold_image, CV_MOP_CLOSE, morphologyKernel);
    
    	Canny(threshold_image, threshold_image, 45, 45 * 3);
    	imshow("Canny", threshold_image);
    	vector<vector<Point>> contours;
    	vector<Vec4i> hireachy;
    
    	//找轮廓
    	findContours(threshold_image, contours, hireachy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE, Point(-1, -1));
    	int flag_count = 0;
    	///vector< vector<Point>> contours_poly(contours.size());
    	//建一个全黑的图像
    	Mat show_threImage = Mat::zeros(threshold_image.size(), CV_8UC3);
    	double s_area = 0;
    	for (size_t i = 0; i < contours.size(); i++)
    	{
    		//在全黑的图像上画轮廓
    		drawContours(show_threImage, contours, static_cast<int>(i), Scalar(255, 255, 255), 2, 8, hireachy, 0, Point()); 
    		//利用面积进行判断是否为最大区域
    		double area = contourArea(contours[i]);
    		if (s_area < area)
    		{
    			s_area = area;
    		}
    		else
    		{
    			s_area = s_area;
    		}
    
    		if (area == s_area)
    		{
    			flag_count = static_cast<int>(i);
    		}
    		else
    		{
    			flag_count = flag_count;
    		}
    	}
    
    	imshow("Draw_Image_Contours", show_threImage);
    
    	Mat gray(src.size(), src.type(), Scalar(0, 0, 0));
    	drawContours(gray, contours, flag_count, Scalar(255, 255, 255), 4, 8, hireachy, 0, Point());
    	namedWindow("gray", 0);
    	imshow("gray", gray);
    	
    	//为了找内部的一个漫水填充的种子点
    	Rect s = boundingRect(contours[flag_count]);
    	//黑色区域变成白色,遇到白色区域停止
    	floodFill(gray, Point(s.x + s.width / 2, s.y + s.height / 2), Scalar(255,255,255));
    	bitwise_and(src, gray, dst);
    }
    
    展开全文
  • opencv提取ROI区域

    万次阅读 2013-09-26 23:54:06
    #include #include #include using namespace std; void GetROI(IplImage *src,IplImage *dst,int height,int width) { //IplImage *src = cvLoadImage("E:\\3.jpg"); int srcHeight=src->height;
    #include <highgui.h>
    #include <cv.h>
    #include <iostream>
    using namespace std;
    void GetROI(IplImage *src,IplImage *dst,int height,int width)
    {
      
     //IplImage *src = cvLoadImage("E:\\3.jpg");
     int srcHeight=src->height;
     int srcWidth=src->width;
     CvRect rect;
     rect.x=(srcWidth-width)/2;
     rect.y=(srcHeight-height)/2;
    
     if (rect.x<0||rect.y<0)
     {
      cout<<"指定的图像大小越界"<<endl;
      return;
     }
     rect.width= width;
     rect.height=height;
    
     IplImage *dst=cvCreateImage(cvSize(64,128),src->depth,src->nChannels);
    
     cvSetImageROI(src,rect);
     cvCopy(src,dst);
     //cvSaveImage("E:\\44.jpg",dst);
     
    } 
    
     
    


     

    展开全文
  • 此外关于OpenCVROI的操作,有很多比较好的写法,OpenCV是很值得去好好研究一下的: 比如,需要实现寻找包裹轮廓的最小正矩形,boundRect = minRect.boundingRect();就可以轻松实现 for (auto &cnt : contoursMap)...
    一、代码
    Rect boundRect(0,0,0,0);
    Mat im_boundRect(im_bgr.rows, im_bgr.cols, CV_8UC3);
    im_bgr(boundRect).copyTo(im_boundRect);
    二、代码
    Mat im_boundRect = im_bgr(boundRect);

            在Android JNI开发中选择代码一问题解决,但是使用代码方式二,算法识别结果为空;在VS中,这两种方法都是可以的,这一块需要分析一下为什么会有差异。此外关于OpenCV中ROI的操作,有很多比较好的写法,OpenCV是很值得去好好研究一下的:

    比如,需要实现寻找包裹轮廓的最小正矩形,boundRect = minRect.boundingRect();就可以轻松实现

    for (auto &cnt : contoursMap) 
    {
            cv::RotatedRect minRect = cv::minAreaRect(cnt.second);    //contoursMap[1]
            boundRect = minRect.boundingRect();
            cv::Mat im_boundRect = im_bgr(boundRect);
    ......
    • JDK的安装

    展开全文
  • 原理: 1、先提取Mat的特定区域 // 提取原图区域 ...2、提取新图的区域,然后把上面提取出来的区域像素,复制到这个区域里面 // 提取新图区域 cv::Mat roiTmp = cv::Mat(roiMat, cv::Rect(100,20...
  • OpenCV ROI区域图像叠加

    千次阅读 2016-09-12 18:30:25
    ③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。④特殊形状图像的制作。 在下面的代码中,我们通过一个图像掩膜(mask),直接将插入处的像素设置为logo图像的像素值,...
  • 之前写了好几篇有关于指静脉图片ROI提取的博客 但是这些都是针对指节区域提取,或者针对旋转位置纠正,或者针对手指轮廓提取,并没有将这些东西整合起来。今天这篇就记录一下提取的流程。(仅仅适用于我的目标...
  • 感兴趣区域ROI 1)ROI介绍 **ROI–感兴趣的区域 **一般为矩形区域 **能够定义分析重点,减少处理时间,增减精度 **定义方法: 使用Rect表示矩形区域或者用Range设定行列范围 ex1: Mat img=imread(“1.jpg”...
  • Python+OpenCV感兴趣区域ROI提取

    万次阅读 2017-06-23 22:00:28
    Python+OpenCV2感兴趣区域ROI提取方法一:使用轮廓步骤1"""src为原图""" ROI = np.zeros(src.shape, np.uint8) #感兴趣区域ROI proimage = src.copy() #复制原图 """提取轮廓""" proimage=cv2.cvtColor(proimage,cv...
  • opencvROI提取

    千次阅读 2016-08-29 18:14:06
    c++程序设置: Mat image; Rect roi(x,y,w,h); Mat rio_of_image = image(roi);
  • 废话少说代码如下: /** * 按照指定的尺寸截取Mat,截取宽高自动计算(对称)。坐标原点为左上角 * * @param src 源Mat * @param x x * @param y y * @return 截取后的Mat */ public static Mat cut(Mat ...
  • return pt1,pt2 def bitplane(self,image, channel:'int'=0, n_RD:'int'=7, value=255)->np.ndarray: # 灰度图:位平面提取 """ 灰度图:位平面提取 """ img = image if type(image) == type(np.ndarray(())) else ...
  • Opencv提取不规则ROI

    千次阅读 2015-10-21 18:11:25
    这次第一次写博客,写的不太好,希望大家多多包涵,有错的地方也希望大家提出来~~ ...首先它创建了一个网格,以这个网格为模板进行不规则的ROI提取,然后进行sobel边缘检测,再经过膨胀,再提取不规则ROI提取,最后
  • OpenCV 提取不规则ROI区域

    千次阅读 2019-12-16 12:33:10
    提取ROI区域 方法一: 方法二: 实际应用演示 原文出处: https://mp.weixin.qq.com/s/MiHz2zLBif_s1lksQXLBbw 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 什么是ROI ROI是英文Region Of...
  • 通过OpenCV读取图片,进行二值化操作后寻找轮廓,并且将轮廓保存再与原图片进行位与运算,完成裁切效果。本项目中主要提取图片中的圆形以及三角形。 二、代码实例 // An highlighted block src = cv.imread(r"D:\...
  • opencvROI区域的提取

    2021-04-17 19:11:31
    首先利用dlib库识别出了人脸区域,现在要将识别出来的人脸区域进行保存,即提取ROI区域: 代码原来是利用便利的方式,写了两层循环来给新图像赋值 for ii in range(height * 2): for jj in range(width * 2): ...
  • then crop the region of interest # from teh image and display it if len(refPt) == 2: roi = clone[refPt[0][1]:refPt[1][1], refPt[0][0]:refPt[1][0]] cv2.imshow("ROI", roi) cv2.waitKey(0) # close all...
  • opencv 如何提取旋转矩形的ROI

    千次阅读 2016-03-22 17:17:51
    我如何把这个旋转矩形(包含轮廓信息啦)保存到另一个Mat中,opencv中有提取ROI是对rect来说的,旋转的矩形就不知道怎么办了 如果得不到这个旋转矩形的话,那么有没有办法计算轮廓到边界框的距离呢——就是...
  • OpenCV 轮廓提取

    千次阅读 2015-04-10 08:55:18
    轮廓提取——主要针对二值图像 轮廓分为外轮廓和内轮廓 如下图:外轮廓以c开头 内轮廓以h开头 opencv 提供了寻找轮廓的函数 inttotals = cvFindContours(img, storage,&contours,sizeof(CvContour), CV_RETR_...
  • 但是在大多数情况下,没有这样的图像,所以需要从拥有的任何图像中提取背景。当运动物体有阴影时,由于阴影也在移动,情况会变的变得更加复杂。为此引入了背景减除算法,通过这一方法我们能够从视频中分离出运动的
  • opencv2/highgui/highgui.hpp> #include <opencv2/core/core.hpp> #include <opencv2/imgcodecs.hpp> #include<opencv2/opencv.hpp> #include <iostream> #include <...
  • OpenCV代码提取:dft函数的实现

    千次阅读 2016-11-01 21:12:12
    OpenCV代码提取:dft函数的实现
  • OpenCV代码提取: threshold函数的实现

    千次阅读 2016-09-10 12:14:19
    OpenCV代码提取: threshold函数的实现

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,834
精华内容 1,933
关键字:

opencvroi提取