opencv (1)

1、将图片灰度化,以及像素操作(将3通道的RGB图像,灰度化为单通道的灰度图像):

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

img=cv2.imread('las.jpg') #读取图像,保存为矩阵形式
#cv2.imshow("RGB",img) #RGB为窗口名
print(img.shape) #shape,可以获取图片的属性

#cv2.waitKey(0)

width=img.shape[1] #列数,即宽度
height=img.shape[0] #行数,即高度

'''
  0-----------------------------> x
  |
  |
  |
  |
  |
  |
  y
  
'''
#必须将数组元素限定在uint8内,RGB图像的灰度级一般为256
news=np.zeros((height,width),np.uint8()) #uint8,2^8,取值为0-255

for h in range(height):
    for w in range(width):
        gray=0.3*img[h,w][0]+0.59*img[h,w][1]+0.11*img[h,w][2] #opencv读取图片,以BGR的形式存储
        news[h,w]=np.uint8(gray)
#cv2.imshow('gray',news)

cv2.imwrite('the gray one.jpg',news)

#将图片的某一区域的像素全部变成白色(255)
img[0:100,0:100,0:3]=[255,255,255] #不加0:3也行(左闭右开)
cv2.imshow('the white zone',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

'''
plt.hist(img.ravel(),256)
plt.show()
'''

另外一种灰度化的方法,使用库函数cv2.COLOR_BGR2GRAY:

import cv2
import numpy as np

#使用cv2.COLOR_BGR2GRAY将图片灰度化(同样的,结果的图片也是单通道的)
img=cv2.imread('las.jpg')
img1=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('1',img1)

a=img1[50,50]
print(a) #a的值只有一个,说明使用cv2.COLOR_BGR2GRAY转换出来的图是单通道的

2、提取出感兴趣区域(简单的提取):

import cv2
import numpy as np

img1=cv2.imread('the gray one.jpg')
print(img1.size) #像素个数
print(img1.shape) #维度
print(img1.dtype) #图像类型,uint8

in_area=np.ones((100,100,3),np.uint8()) #zeros也可以

#print(help(np.ones)) #通过这个方式可以查看某个函数的官方文档解释

in_area=img1[300:400,300:400]
cv2.imshow('ins',in_area)  #提取出感兴趣区域

img1[0:100,0:100] = in_area
cv2.imshow('ronghe',img1) #与原图进行融合

3、通道变换1:
变换前:
opencv (1)_第1张图片

import cv2
import numpy as np
#opencv读取RGB图片,用BGR的格式存储
img=cv2.imread('las.jpg')
cv2.imshow('test1',img)

b,g,r=cv2.split(img)
img1=cv2.merge([r,g,b]) #merge最多两个参数
cv2.imshow('test2',img1)

变换后:
opencv (1)_第2张图片通道变换2:
原图:opencv (1)_第3张图片

import cv2
import numpy as np
img=cv2.imread('las.jpg')
c,k,h=img.shape
b,g,r = cv2.split(img)

cv2.imshow('b',b)

img1=np.zeros((c,k,h),np.uint8())
img1[:,:,0]=b
cv2.imshow('bule',img1)

窗口b:
opencv (1)_第4张图片窗口bule:
opencv (1)_第5张图片

你可能感兴趣的:(opencv)