欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

图像数据处理

程序员文章站 2024-03-04 16:36:59
...

读入、显示图像与保存图像

1、用cv2.imshow显示


import cv2

img=cv2.imread('lena.jpg',cv2.IMREAD_COLOR)
cv2.namedWindow('lena',cv2.WINDOW_AUTOSIZE)
cv2.imshow('lena',img)
k=cv2.waitKey(0)

if k==27:
    cv2.destroyAllWindows()
    plt.close()
elif k==ord('s'):
    cv2.imwrite('lenagray.png',img)
    cv2.destroyAllWindows()

2、用PIL读取

from PIL import Image
im = Image.open("bride.jpg")
im.rotate(45).show()

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('d:/lena.jpg'))  #打开图像并转化为数字矩阵
plt.figure("dog")
plt.imshow(img)
plt.axis('off')
plt.show()

显示灰度图

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

img = Image.open('lena.jpg')
img = np.array(img)
if img.ndim == 3:
    img = img[:,:,0]
plt.subplot(221); plt.imshow(img)
plt.subplot(222); plt.imshow(img, cmap ='gray')
plt.subplot(223); plt.imshow(img, cmap = plt.cm.gray)
plt.subplot(224); plt.imshow(img, cmap = plt.cm.gray_r)
plt.show()

3、io.imread

from skimage import io
img=io.imread('d:/dog.jpg',as_grey=True)
io.imshow(img)

4、用cv2.imread读取,用plt.imshow显示

import cv2
from matplotlib import pyplot as plt
img=cv2.imread('lena.jpg',cv2.IMREAD_COLOR)
plt.imshow(img)
plt.show()

用cv2读取用plt显示图片的方法会导致图像色彩偏蓝
对于opencv的像素是BGR顺序,然而matplotlib所遵循的是RGB顺序。
opencv的一个像素为:[B,G,R] ,matplotlib的一个像素为:[R,G,B]。这就是为什么本来发红的区域变得有些发蓝了。

解决方法:

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

img=cv2.imread('lena.jpg',cv2.IMREAD_COLOR)

#method1
b,g,r=cv2.split(img)
img2=cv2.merge([r,g,b])
plt.imshow(img2)
plt.show()

#method2
img3=img[:,:,::-1]
plt.imshow(img3)
plt.show()

#method3
img4=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img4)
plt.show()
相关标签: 图像处理