OpenCV(八)—— 图像的基本操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/FLORIDA_tang/article/details/82501178
  • 获取像素值并修改
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()

猜你喜欢

转载自blog.csdn.net/FLORIDA_tang/article/details/82501178