`

opencv_python学习笔记七

 
阅读更多

图像的基础操作

a获取像素值并修改

b获取图像的属性(信息)

c图像的ROI()

d图像通道的拆分和合并

1 获取并修改像素值

import cv2
import numpy as np

img=cv2.imread('test.jpg')

#取得像素
px=img[20,20]
print(px)
blue=img[20,20,0]
print(blue)

#显示结果如下
#[191 191 191]
#191

#修改像素
img[20,20]=[255,255,255]
print(img[20,20])

#更好的方法
print(img.item(10,10,2))
img.itemset((10,10,2),100)
print(img.item(10,10,2))

2 获取图像属性

print(img.shape)
#(220,#行数

265,#列数

3)#通道数

#取得图形的像素数
print(img.size)
#174900

#返回图像的数据类型
print(img.dtype)
#uint8

常用属性:

通道

图像数据类型

像素数目

3 图像的ROI

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/11/14 11:24
# @Author : Retacn
# @Site : 对一幅图像的特定区域进行操作,先择部分图像考贝到图像的其他区域
# @File : ROITest.py
# @Software: PyCharm

import cv2
import numpy as np
img=cv2.imread("test.jpg")
ball=img[20:30,30:40]
img[200:210,100:110]=ball

#显示图像,窗口会自动调整为图像大小
cv2.imshow("DrawView",img)
#等待用户键入
k=cv2.waitKey(0)
#释放窗体
cv2.destroyAllWindows()

4 拆分及合并图像通道

RGB拆分为单个通道

把独立通道的图片合并成一个RGB图像

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/11/14 11:43
# @Author : Retacn
# @Site : 图像的拆分和合并图像通道
# @File : viewMarge.py
# @Software: PyCharm

import cv2
import numpy as np

img=cv2.imread('test.jpg')
b,g,r=cv2.split(img)
img=cv2.merge(b,g,r)


#b=img[:,:,0]
#img[:,:,2]

5 为图像扩边

cv2.copyMakeBorder()
def copyMakeBorder(src,#输入图像
top,#对应边界的像素数
bottom,
left,
right,
borderType,#要添加的边界类型
dst=None,
value=None)

cv2.BORDER_CONSTANT#添加有颜色的常数边界值
cv2.BORDER_REFLECT#边界元素的镜像
cv2.BORDER_REFLECT_101
cv2.BORDER_REPLICATE#重复最后一个元素
cv2.BORDER_WRAP

示例代码如下:#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/11/14 11:55
# @Author : Retacn
# @Site :
# @File : makeBorder.py
# @Software: PyCharm

import cv2
import numpy as np
from matplotlib import pyplot as plt

BLUE=[255,0,0]
img1=cv2.imread("test.jpg")

replicate=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE)
reflect=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT)
reflect101=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101)
wrap=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP)
constant=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)

plt.subplot(231),plt.imshow(img1,'gray'),plt.title("ORIGINAL")
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title("REPLICATE")
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title("REFLECT")
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title("REFLECT_101")
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title("WRAP")
plt.subplot(236),plt.imshow(constant,'gray'),plt.title("CONSTANT")

plt.show()

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics