python,opencv切割图像操作
2014-06-23 19:14
489 查看
1.python中切片操作
在Python中,切片操作使我们取数据方便了很多,先解释一下Python的切片操作:切片操作包含三个参数[x:y:z],其中,x表示切片的起始位置,为空则表示从字符串的起始位置开始;y表示切片的结束为止,为空则表示字符串的末位(最后一个字符结束的位置)。z表示步长,即切片时指针移动的距离,默认值为1,如果设z为2,则会每间隔一个字符取一次,以此类推。
image=img[起点:终点,起点:终点]
其中,img为待切割图像,方括号内为要切割的图片块坐标;image为切割后图像。
举例其它用法:
首先我们声明一个字符串s='abcde',跟其他语言比较相似,字符串s中'a'所对应的下标为0,'b'对应的下标为1,'e'对应的则是4.反过来,'e'对应的下标也是-1,'d'对应的下标为-2,以此类推。
[python] view
plaincopyprint?
>>> s = 'abcde'
操作一:取字符串'ab'
[python] view
plaincopyprint?
>>> s[0:2]
'ab'
或者:
[python] view
plaincopyprint?
>>> s[:2]
'ab'
反过来取:
[python] view
plaincopyprint?
>>> s[-5:-3]
'ab'
或者:
[python] view
plaincopyprint?
>>> s[:-3]
'ab'
操作二:取整个字符串'abcde'
[python] view
plaincopyprint?
>>> s
'abcde'
或者:
[python] view
plaincopyprint?
>>> s[:]
'abcde'
操作三:间隔取字符串'ace'
[python] view
plaincopyprint?
>>> s[::2]
'ace'
操作四:反向取'edcba'
[python] view
plaincopyprint?
>>> s[::-1]
'edcba'
操作五:取单个字符
[python] view
plaincopyprint?
>>> s[0]
'a'
>>> s[3]
'd'
虽然先前知道ROI区域是感兴趣区域,但是真正看到调用了OpenCV的cvSetImageROI函数时,并不知道它的作用,所以还是单独写了一段代码对这个函数进行探究。
2.OpenCV中cv.SetImageROI函数的介绍如下:
void cvSetImageROI( IplImage* image, CvRect rect );
image
图像.
rect
ROI 矩形.
函数 cvSetImageROI 基于给定的矩形设置图像的 ROI(感兴趣区域) . 如果ROI是NULL 并且参数RECT的值不等于整个图像, ROI被分配. 不像 COI, 大多数的 OpenCV 函数支持 ROI 并且处理它就像它是一个分离的图像 (例如, 所有的像素坐标从ROI的左上角或左下角(基于图像的结构)计算。
测试代码:
[cpp] view
plaincopy
#include<cv.h>
#include<cxcore.h>
#include<highgui.h>
void main()
{
IplImage *res,*dst;
CvRect rect;
rect.x=130,rect.y=30,rect.width=200,rect.height=200;
res=cvLoadImage("C:/Users/lufee/Pictures/cat.jpg");//载入一张图片
dst=cvCreateImage(cvSize(200,200),8,3);//创建图像空间
//创建窗口
cvNamedWindow("res",CV_WINDOW_AUTOSIZE);
cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);
//设置ROI区域
cvSetImageROI(res,rect);
//提取ROI
cvCopy(res,dst);
//取消设置
cvResetImageROI(res);
//显示图像
cvShowImage("res",res);
cvShowImage("dst",dst);
cvWaitKey(0);
cvDestroyWindow("res");
cvDestroyWindow("dst");
cvReleaseImage(&res);
cvReleaseImage(&dst);
}
运行结果(res为原图,dst为提取的ROI区域):
在Python中,切片操作使我们取数据方便了很多,先解释一下Python的切片操作:切片操作包含三个参数[x:y:z],其中,x表示切片的起始位置,为空则表示从字符串的起始位置开始;y表示切片的结束为止,为空则表示字符串的末位(最后一个字符结束的位置)。z表示步长,即切片时指针移动的距离,默认值为1,如果设z为2,则会每间隔一个字符取一次,以此类推。
image=img[起点:终点,起点:终点]
其中,img为待切割图像,方括号内为要切割的图片块坐标;image为切割后图像。
举例其它用法:
首先我们声明一个字符串s='abcde',跟其他语言比较相似,字符串s中'a'所对应的下标为0,'b'对应的下标为1,'e'对应的则是4.反过来,'e'对应的下标也是-1,'d'对应的下标为-2,以此类推。
[python] view
plaincopyprint?
>>> s = 'abcde'
操作一:取字符串'ab'
[python] view
plaincopyprint?
>>> s[0:2]
'ab'
或者:
[python] view
plaincopyprint?
>>> s[:2]
'ab'
反过来取:
[python] view
plaincopyprint?
>>> s[-5:-3]
'ab'
或者:
[python] view
plaincopyprint?
>>> s[:-3]
'ab'
操作二:取整个字符串'abcde'
[python] view
plaincopyprint?
>>> s
'abcde'
或者:
[python] view
plaincopyprint?
>>> s[:]
'abcde'
操作三:间隔取字符串'ace'
[python] view
plaincopyprint?
>>> s[::2]
'ace'
操作四:反向取'edcba'
[python] view
plaincopyprint?
>>> s[::-1]
'edcba'
操作五:取单个字符
[python] view
plaincopyprint?
>>> s[0]
'a'
>>> s[3]
'd'
虽然先前知道ROI区域是感兴趣区域,但是真正看到调用了OpenCV的cvSetImageROI函数时,并不知道它的作用,所以还是单独写了一段代码对这个函数进行探究。
2.OpenCV中cv.SetImageROI函数的介绍如下:
void cvSetImageROI( IplImage* image, CvRect rect );
image
图像.
rect
ROI 矩形.
函数 cvSetImageROI 基于给定的矩形设置图像的 ROI(感兴趣区域) . 如果ROI是NULL 并且参数RECT的值不等于整个图像, ROI被分配. 不像 COI, 大多数的 OpenCV 函数支持 ROI 并且处理它就像它是一个分离的图像 (例如, 所有的像素坐标从ROI的左上角或左下角(基于图像的结构)计算。
测试代码:
[cpp] view
plaincopy
#include<cv.h>
#include<cxcore.h>
#include<highgui.h>
void main()
{
IplImage *res,*dst;
CvRect rect;
rect.x=130,rect.y=30,rect.width=200,rect.height=200;
res=cvLoadImage("C:/Users/lufee/Pictures/cat.jpg");//载入一张图片
dst=cvCreateImage(cvSize(200,200),8,3);//创建图像空间
//创建窗口
cvNamedWindow("res",CV_WINDOW_AUTOSIZE);
cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);
//设置ROI区域
cvSetImageROI(res,rect);
//提取ROI
cvCopy(res,dst);
//取消设置
cvResetImageROI(res);
//显示图像
cvShowImage("res",res);
cvShowImage("dst",dst);
cvWaitKey(0);
cvDestroyWindow("res");
cvDestroyWindow("dst");
cvReleaseImage(&res);
cvReleaseImage(&dst);
}
运行结果(res为原图,dst为提取的ROI区域):
相关文章推荐
- python+opencv操作图像视频
- Python-OpenCV 处理图像(三):图像像素点操作
- opencv-python(5):图像基本操作
- Python-OpenCV 处理图像(一):基本操作
- OpenCV-Python learning-5.图像基本操作
- Mac 下安装 Python-OpenCV Python-OpenCV 处理图像(一):基本操作
- Python用OpenCV 处理图像的基本操作
- Python3与OpenCV3.3 图像处理(二)--图像基本操作
- Python OpenCV3 图像操作
- Python3与OpenCV3.3 图像处理(二十五)--开闭操作(补充)
- Python-OpenCV 处理图像(三):图像像素点操作
- Python-OpenCV 处理图像(一):基本操作 cv2
- Python OpenCV学习笔记之:图像阈值操作
- python opencv的视频与图像操作
- Python-OpenCV 处理图像(三):图像像素点操作
- Python-OpenCV 处理图像(一):基本操作
- Python-OpenCV图像像素点操作
- Python下使用OpenCV——图像的基本操作
- Python3与OpenCV3.3 图像处理(二十四)--开闭操作
- OpenCv-Python 图像处理基本操作