怎么把下面对图片进行ROI设定的代码改成对摄像头ROI区域的设定
#include
#include
using namespace std;
int main (int argc, char **argv)
{
// 加载原图像
IplImage* img = cvLoadImage("F://12.jpg");
// 创建新的要显示感兴趣区域的图像
IplImage* img2 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);
// 创建感兴趣ROI矩形区域
CvRect rect = cvRect(100,100,500,500);
cvCopy(img,img2);
cvSetImageROI(img2,rect);
cvNamedWindow("源图像",1);
cvShowImage("源图像",img);
cvNamedWindow("ROI图像",1);
cvShowImage("ROI图像",img2);
while(1)
{
if(cvWaitKey(100) == 27)
break;
}
cvDestroyWindow("源图像");
cvDestroyWindow("ROI图像");
cvReleaseImage(&img);
cvReleaseImage(&img2);
}
#include
#include
using namespace std;
int main(int argc, char **argv)
{
// 加载原图像
CvCapture* capture = cvCaptureFromCAM(0); // capture from video device #0
IplImage* img = 0;
if (!cvGrabFrame(capture)){ // 抓取一帧,失败退出
printf("Could not grab a frame\n");
exit(0);
}
img = cvRetrieveFrame(capture); // 恢复获取的帧图像
// 创建新的要显示感兴趣区域的图像
IplImage* img2 = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);
// 创建感兴趣ROI矩形区域
CvRect rect = cvRect(10, 20, 200, 250);
cvCopy(img, img2);
cvSetImageROI(img2, rect);
cvNamedWindow("源图像", 1);
cvShowImage("源图像", img);
cvNamedWindow("ROI图像", 1);
cvShowImage("ROI图像", img2);
while (1)
{
if (cvWaitKey(100) == 27)
break;
}
cvDestroyWindow("源图像");
cvDestroyWindow("ROI图像");
cvReleaseImage(&img);
cvReleaseImage(&img2);
}
感兴趣区域的部分要自己设定。
(一)感兴趣区域ROI
在图像处理中,我们常常需要设置感兴趣区域(ROI,region of interest),来专注或者简化工作过程.也就是从图像中选择一个图像区域,这个区域是图像分析所关注的重点。我们圈定这个区域,以便进行进一步处理.而且,使用ROI指定想读入的目标,可以减少处理时间,增加精度,给图像处理带来不小的便利
在C++中定义ROI区域有两种方法:
1---使用表示矩形的Rect
2---使用range
3--OpemCv1.x中的setImageROI()函数
在这里,我就不多说了,可以参考OpenCv的官方教程和相应的源码
(二)python中ROI区域的设置
#coding:utf-8
#===============================================
#文件说明:
#开发环境:
#时间地点:
#作 者:
#===============================================
'''【模块1】感兴趣区域的设置ROI'''
#1--Python中ROI区域的设置也是使用Numpy中的索引来实现的
import cv2
import numpy as np
srcImg = cv2.imread("/home/wei/Image/cat.png",cv2.CV_LOAD_IMAGE_COLOR)
cv2.imshow("[srcImg]",srcImg) #[1]显示原始图片
roiImg = srcImg[20:150,170:350] #[2]我们使用numpy中的数组切片的方式m截取载入图片上的猫头部分,
# 然后,将截取的这部分ROI区域的图片保存在roiImg矩阵变量中
srcImg[0:130,0:180] = roiImg #[3]在这一步,我们将截取的ROI区域部分添加到原如的指定的区域
cv2.imshow("[roiImg]",srcImg) #[4]显示添加的ROI区域的图片