opencv__0">opencv 读取图片
1.skimage图像的读取
from skimage import io
img = io.imread('dog.jpg')
io.imshow(img) #显示图片
运行结果:
注:img = io.imread(‘dog.jpg’,as_gray=True)中的as_gray=True是是图片变成灰色。
运行结果:
2.读取skimage里面的图片
from skimage import io,data
img=data.chelsea() #chelsea是skimage库里面的图片
io.imshow(img)
运行结果:
注:另一些图片名称
3.查找skimage图片示例
from skimage import data_dir #导入Scikit-image库中的data_dir属性。
print(data_dir)#打印data_dir
运行结果:
4.读取图片(图片形式为二进制)
from skimage import data_dir,data,io
img1 = data.chelsea()
img2 = io.imread(data_dir+'/chelsea.png')
print(img2)
运行结果:
5.保存图片
from skimage import io,data
img=data.chelsea()
io.imshow(img)
io.imsave('D:\cat0.jpg',img) #imsave是保存图片的意思
运行结果:
6.显示图片属性
from skimage import io,data
img=data.chelsea()
io.imshow(img)
print(type(img)) #显示类型
print(img.shape) #显示尺寸
print(img.shape[0])#显示图片宽度
print(img.shape[1])#显示图片高度
print(img.shape[2])#显示图片通道数
print(img.size) #显示图片总像素个数
print(img.max()) #显示图片最大像素值
print(img.min()) #显示图片最小像素值
print(img.mean()) #显示图片像素平均值
运行结果:
7.将单通道图片变成三通道图片
*图片像素的访问
from skimage import io,data
img=data.chelsea()
pixel=img[20,30,1]
print(pixel)
注:从图像 img 中提取位于第 20 行、第 30 列的像素点的第二个颜色通道(通常是绿色)的值。在 RGB 图像中,每个像素由三个值组成,分别代表红色、绿色和蓝色通道的颜色强度。
运行结果:
*用红色/绿色/蓝色通道提取
from skimage import io,data
img=data.chelsea()
R=img[:,:,0] #这里 img[:,:,0] 表示选取所有行和列的第一个通道,即红色通道:1表示绿色,2表示蓝色。
io.imshow(R)
运行结果:
8.增加噪点
#椒盐噪点:
from skimage import io,data
import numpy as np
img=data.chelsea()
#加载图像的尺寸
rows,cols,dims=img.shape
#使用循环执行50000(噪点数量)
for i in range(50000):x=np.random.randint(0,rows)y=np.random.randint(0,cols)img[x,y,:]=145 #将图像 img 中位于 (x, y) 坐标的所有通道的像素值设置为 145。
io.imshow(img)
io.imsave('D:\cat1.jpg',img) #保存图片
运行结果:
9.使用高斯模糊滤波对图片进行降噪
#高斯模糊滤波
import cv2
#读取图像
image = cv2.imread(r'D:\cat1.jpg')
blurred_image = cv2.GaussianBlur(image,(5,5),0)
#使用 5x5 的高斯核对输入图像进行模糊处理,并将处理后的图像存储在 blurred_image 变量中。
cv2.imshow('Blurred Image',blurred_image)
cv2.waitKey(0) #等待用户按键
cv2.destroyAllWindows() #销毁窗口
注:当为 0 时,OpenCV 会自动计算标准差。
运行结果:
10.使用中值滤波对图片进行降噪
#中值滤波
import cv2image = cv2.imread(r'D:\cat1.jpg')
#是中值模糊的核尺寸,它决定了模糊的范围。这里使用的是 5x5 的核。
median_blurred_image = cv2.medianBlur(image, 5)
cv2.imshow('Median Blurred Image', median_blurred_image)#显示图像窗口
cv2.waitKey(0)#等待用户按键
cv2.destroyAllWindows()#销毁窗口
运行结果:
11.将图片进行切割
from skimage import io,data
img=data.chelsea()
roi=img[90:180,90:200,:] #进行切割
io.imshow(roi)
注:90:180 表示提取的区域的行范围;90:200表示提取的列范围;(:)表示颜色通道:红、绿、蓝。
运行结果:
12.随机生成噪点
import cv2
import numpy as np
import random
img = cv2.imread('33.png')
ingInfo = img.shape
h = ingInfo[0] - 1 #防止早点超出图像范围
w = ingInfo[1] -1
temp = 2500 # 噪声点的个数
#使用循环,并执行temp次
for i in range(0, temp):
#在循环的每次迭代中,这行代码检查一个随机整数是否是偶数。if random.randint(1, temp) % 2 == 0:img[random.randint(0, h), random.randint(0, w)] = (255, 255, 255)#白色像素
#随机数不是偶数,这行代码执行类似的操作,但在随机选择的像素点处设置是黑色像素(0, 0, 0)。if random.randint(1, temp) % 2 != 0:img[random.randint(0, h), random.randint(0, w)] = (0, 0, 0)
cv2.imshow('33', img)
cv2.imwrite('noise.jpg', img)
cv2.waitKey(0)
注:random.randint(1, temp)指的是生成的随机整数在1-temp之间。
运行结果: