6-Basic Operations on Images
2018-03-27 10:40
387 查看
1、接受和修改像素值
import numpy as np import cv2 as cv from matplotlib import pyplot as plt
img = cv.imread('./images/roi.jpg')
可以通过横纵坐标获得对用位置的像素值。返回值为[Blue,Green,Red]。
px = img[100, 100] print(px)
[57 63 68]
blue = img[100,100,0] print(blue)
57
img[100, 100] = [255, 255, 255] print(img[100, 100])
[255 255 255]
上面的方法适合修改连续区域的像素值。
对于单个像素值得修改,使用arry.item()和array.itemset()是更好的办法。
img.item(10,10,2)
50
img.itemset((10, 10, 2), 100) img.item(10, 10, 2)
100
2、接受图像的属性
图像的属性包括:行、列、通道数量;图像的数据类型;像素数量等。print(img.shape)
(280, 450, 3)
print(img.size)
378000
print(img.dtype)
uint8
3、图像ROI
Region of Interest (ROI)即感兴趣的图像区域。可以对感兴趣的图像区域进行取值,赋值操作。注意:用画图工具打开图片时,位置时(x, y)。具体差异是因为img是一个二维数组。二维数组确定图像上一点使用的行列,对应坐标轴恰好相反。。
width = 60
height = 60
x = 50y = 170
ball = img[x:x+width, y:y+height]
img[0:0+width, 0:0+height] = ball
cv
9822
.imshow('head', img)
cv.waitKey(0)
cv.destroyAllWindows()
4、分割和合并颜色通道
b, g, r = cv.split(img) #cv.split()是高代价函数,在需要的时候使用 img = cv.merge((b, g, r))
b = img[:,:,0] #取出Blue通道的值 img[:,:,2] = 0 #对Red通道全赋0值
5、为图像制作边框(填充)
dst = cv.copyMakeBorder( src, top, bottom, left, right, borderType[, dst[, value]] )borderType:
cv.BORDER_REFLECT:边框将镜像反射边框元素,如下所示:fedcba | abcdefgh | hgfedcb
cv.BORDER_REFLECT_101 or cv.BORDER_DEFAULT:和上面一样,但稍作改动,如下所示:gfedcb | abcdefgh | gfedcba
cv.BORDER_REPLICATE:最后一个元素在整个过程中被复制,如下所示:aaaaaa | abcdefgh | hhhhhhh
cv.BORDER_WRAP:无法解释,它将如下所示:cdefgh | abcdefgh | abcdefg
cv.BORDER_CONSTANT:添加一个常量彩色边框。 值应该作为下一个参数给出。value
BLUE = [255,0,0] img1 = cv.imread('./images/logo.png') replicate = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_REPLICATE) reflect = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_REFLECT) reflect101 = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_REFLECT_101) wrap = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_WRAP) constant= cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_CONSTANT,value=BLUE) plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL'),plt.xticks([]),plt.yticks([]) plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE'),plt.xticks([]),plt.yticks([]) plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT'),plt.xticks([]),plt.yticks([]) plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101'),plt.xticks([]),plt.yticks([]) plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP'),plt.xticks([]),plt.yticks([]) plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT'),plt.xticks([]),plt.yticks([]) plt.show()
相关文章推荐
- 【OpenCv-Python】六、Basic Operations on Images
- Blending of images, raster operations and basic color adjustments with GDI+
- 【OpenCv-Python】七、Arithmetic Operations on Images
- 7-Arithmetic+Operations+on+Images
- Python opencv operations on images 图片操作
- Support of basic operations on Sets in Dynamics AX
- Operations on basic server (by Python)
- 链表的基本操作(Basic Operations on a Linked List)
- 1.6 Indexing and Basic Data Operations--目录
- Basic Guide on IPTables (Linux Firewall) Tips / Commands
- Basic operations in OpenVZ environment
- 使用装饰器实现一个简单的Tornado用户认证Demo(Basic authentication on Tornado with a decorator)
- output-operations-on-dstreams
- Oracle (Siebel) On Demand Basic Knowledge
- BASIC HTTP AUTHENTICATION ON ANDROID
- Real-Time Direct Dense Matching on Fisheye Images
- 关于链表的一些重要操作(Important operations on a Linked List)
- [agc003e]Sequential operations on Sequence
- Expert One-on-One Visual Basic .NET Business Objects
- Tensorflow Image Processing Basic 2: Load Images from folder