OpenCV(八)—— 图像的基本操作
程序员文章站
2022-03-25 17:27:07
...
- 获取像素值并修改
import cv2
import numpy as np
img = cv2.imread('/home/blvin/图片/don.png')
#获取像素值
px = img[10,100]
print(px)
blue = img[10,100,2]
print(blue)
#修改像素值
img[10,100] = [255,255,255]
print(img[10,100])
#获取像素值及修改的更好方法
print(img.item(10,100,2))
img.itemset((10,100,2),100)
print(img.item(10,100,2))
- 获取图像属性
#获取图像属性
print(img.shape)
#如果是灰度图,返回值仅有行数和列数
#返回像素点数目
print(img.size)
#返回图像的数据类型
print(img.dtype)
- 图像ROI
ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。在Halcon、OpenCV、Matlab等机器视觉软件上常用到各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。
b = img[100:200,300:400]
img[100:200,100:200] = b
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
运行效果
拆分及合并图像通道
把G通道的值都赋为0
img[:,2,:] = 0
- 为图像扩边
import cv2
import numpy as np
from matplotlib import pyplot as plt
BLUE = [255,0,0]
img1 = cv2.imread('opencv_logo.png')
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()
上一篇: OPENCV学习笔记之基本阈值操作
下一篇: 加工生产调度----------(贪心)