【OpenCV数字图像处理】(4) 【Python编程】(4) 平移
2014-06-30 11:51
387 查看
【转载请注明出处:/article/2381687.html】
配套使用的OpenCV版本:2.4.9 ; Python版本:2.7
主要参考文章(感谢作者分享)
1、python 简单图像处理(3) 平移 http://www.cnblogs.com/xianglan/archive/2010/12/26/1917070.html
2、OpenCV Python教程(1、图像的载入、显示和保存)http://blog.csdn.net/sunny2038/article/details/9057415
程序极其类似于参考文章1、文章1使用的是OpenCV2.0,而OpenCV2.49的写法稍有不同
效果参考文章1,语法参考文章2
主要思想(转载自文章1):
平移是最简单的一种变换,是将一幅图像上的所有点都被按照给定的偏移量在水平方向沿X轴、在垂直方向沿y轴移动
其变换公式是
可用矩阵变换公式
逆变换方法是
若移动后大小不变
当多余部分填充为黑色时
平移结果为
当多余部分为白色时
平移结果为
若移动后图像尺寸变大
则平移结果为
最终代码:
若不进行处理。是一副黑色的图像4
即每个像素点都是0或是tuple(0,0,0)
效果图:
PS:参考文章1作者本意应该是x坐标平移20,y坐标平移30,结果弄反了;
本文为使结果更加明显,[b]x坐标平移20,y坐标平移50[/b]
配套使用的OpenCV版本:2.4.9 ; Python版本:2.7
主要参考文章(感谢作者分享)
1、python 简单图像处理(3) 平移 http://www.cnblogs.com/xianglan/archive/2010/12/26/1917070.html
2、OpenCV Python教程(1、图像的载入、显示和保存)http://blog.csdn.net/sunny2038/article/details/9057415
程序极其类似于参考文章1、文章1使用的是OpenCV2.0,而OpenCV2.49的写法稍有不同
效果参考文章1,语法参考文章2
主要思想(转载自文章1):
平移是最简单的一种变换,是将一幅图像上的所有点都被按照给定的偏移量在水平方向沿X轴、在垂直方向沿y轴移动
其变换公式是
可用矩阵变换公式
逆变换方法是
若移动后大小不变
当多余部分填充为黑色时
平移结果为
当多余部分为白色时
平移结果为
若移动后图像尺寸变大
则平移结果为
最终代码:
#-*-coding:utf-8-*- #解决中文注释问题 import cv2 import numpy as np image = cv2.imread('feng.png') offX = 20 offY = 50 #print(image.shape) #image.shape表示图像的尺寸和通道信息(高,宽,通道) size2 = (image.shape[0]+offY, image.shape[1]+offX,image.shape[2]) iTr1 = np.zeros(image.shape, np.uint8) iTr2 = np.zeros(image.shape, np.uint8) iTr3 = np.zeros(size2,np.uint8) h = image.shape[0] w = image.shape[1] for i in range(h): for j in range(w): iTr3[i+offY,j+offX] = image[i,j] if i >=offY and j >=offX: iTr1[i,j] = image[i-offY,j-offX] iTr2[i,j] = image[i-offY,j-offX] else: iTr1[i,j] = (0,0,0) #平移补黑(默认) iTr2[i,j] = (255,255,255) #平移补白 cv2.imshow('image',image) cv2.imshow('iTr1',iTr1) cv2.imshow('iTr2',iTr2) cv2.imshow('iTr3',iTr3) cv2.waitKey (0) cv2.destroyAllWindows()
若不进行处理。是一副黑色的图像4
即每个像素点都是0或是tuple(0,0,0)
效果图:
PS:参考文章1作者本意应该是x坐标平移20,y坐标平移30,结果弄反了;
本文为使结果更加明显,[b]x坐标平移20,y坐标平移50[/b]
相关文章推荐
- 【OpenCV数字图像处理】(4) 【Python编程】(4) 平移
- 【OpenCV数字图像处理】(2) 【Python编程】(2) 反色
- 【OpenCV数字图像处理】(3) 【Python编程】(3) 镜像
- 【OpenCV数字图像处理】(5) 【Python编程】(5) 像素访问之添加椒盐实例 通道分离与合并
- 【数字图像处理】OpenCV最大化HSV图像的"S"和"V"部分
- Opencv (Opencv2)结合MFC学习数字图像处理---图片解码(3)
- opencv 数字图象处理 图像平移变换
- OpenCV数字图像处理六:图像垂直翻转
- ★【OpenCV数字图像处理】(1)_总记
- Opencv (Opencv2)结合MFC学习数字图像处理【0】---开篇
- OpenCV-跟我一起学数字图像处理之拉普拉斯算子
- 数字图像处理--通过矩阵,简化操作(旋转,平移,缩放,切边....)
- opencv 数字图像处理-图像错切
- Opencv (Opencv2)结合MFC学习数字图像处理【2】---图片解码
- Opencv (Opencv2)结合MFC学习数字图像处理---显示图片
- opencv 数字图像处理-图像缩放 自己写cvResize()函数
- Opencv (Opencv2)结合MFC学习数字图像处理---图片解码(2)
- Opencv (Opencv2)结合MFC学习数字图像处理---图片解码(1)
- Opencv (Opencv2)结合MFC学习数字图像处理【1】---建立工程
- (转)Opencv (Opencv2)结合MFC学习数字图像处理【3】---显示图片