运营企业网站怎么赚钱,个人备案网站可以做淘宝客吗,网站改标题,网站建设汇报材料更改图像数据
通过 改像素点 或者 切片的区域
import cv2
import numpy as np
img cv2.imread(image.jpg)
print(img[3,5]) # 显示某位置(行3列5)的像素值( 如 [53 34 29] 它是有三通道 B G R 组成)
img[3,5] (0,0,255) # 更改该位置的像素…更改图像数据
通过 改像素点 或者 切片的区域
import cv2
import numpy as np
img cv2.imread(image.jpg)
print(img[3,5]) # 显示某位置(行3列5)的像素值( 如 [53 34 29] 它是有三通道 B G R 组成)
img[3,5] (0,0,255) # 更改该位置的像素img[0:100,100:200,0] 255 # 更改区域(0~100行 100~200列) B通道的值为255
img[100:200,200:300,1] 255
img[200:300,300:400,2] 255
cv2.imshow(changeData,img) # 显示可看到图像有 蓝色 绿色 红色的方块区域
cv2.waitKey(2000) 图像通道分离
#---方式一(opencv自带的函数)
import cv2
import numpy as np
img cv2.imread(image.jpg)
b, g, r cv2.split(img) # 分离为blue,green ,red 三色通道(注opencv 通道顺序是BGR而不是主流的RGB)# img cv2.cvtColor(img,cv2.COLOR_BGR2RGB) 调整通道顺序为RGB# 只分离一个 b cv2.split(img)[0] 0:b 1:g 2:r
cv2.imshow(Blue, r)
print(r.shape) # (240,320)
cv2.imshow(Red, g)
cv2.imshow(Green, b)
cv2.waitKey(0)#---方式二(numpy的函数)
import cv2
import numpy as np
img cv2.imread(image.jpg)
print(img.shape)
r np.zeros((img.shape[0],img.shape[1]), dtypeimg.dtype) #//创建numpy空间
r[:,:] img[:,:,2] #//拷贝r通道的数据cv2.imshow(Red, r)
cv2.waitKey(0) 图像通道合并
import cv2
import numpy as np
img cv2.imread(image.jpg)
b, g, r cv2.split(img)
merged cv2.merge([b,g,r]) # 合并通道如果换成 [r, g, b]就和原图像不一样了
print(merged.shape) # (240, 320, 3) 合并后顺序是(高度 宽度 通道数)
cv2.imshow(Merged, merged)
cv2.waitKey(0)图像拼接
import os
import cv2
import numpy as npdef mergePic(files):baseimg cv2.imread(files[0])for file in files[1:]: # 遍历除第一个外的numpyimgcv2.imread(file)baseimgnp.append(baseimg,img,axis1) # 横向追加图像(axis0时为纵向)cv2.imwrite(mergeCv2.png,baseimg)path ./pic/ # 注该路径下的图像必须是相同格式尺寸的图像
images [] #先存储所有的图像的名称
for root, dirs, files in os.walk(path):for f in files :images.append(pathf)
print(images,len(images))mergePic(images)图像混合(虚化后混合)
import cv2
import numpy as np
img1cv2.imread(image.jpg)
img2cv2.imread(opencv_logo.jpg)
img2 cv2.resize(img2,(img1.shape[1],img1.shape[0])) # 注意opencv的resize和shape是反的
print(img1.shape,img1.size,img1.dtype)
print(img2.shape,img2.size,img2.dtype)dstcv2.addWeighted(img1,0.7,img2,0.3,0) # 注不同尺寸会报错可采用resize或roi方式处理
# 0.7/0.3为图像混合占的比重在0通道
cv2.imshow(dst,dst)
cv2.waitKey(0)缩放、旋转和裁剪
import cv2# 打开图像
image cv2.imread(example.jpg)# 缩放图像
scaled_image cv2.resize(image, (500, 500))# 旋转图像
rotated_image cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)# 裁剪图像
cropped_image image[100:300, 100:300]# 显示变换后的图像
cv2.imshow(Scaled Image, scaled_image)
cv2.imshow(Rotated Image, rotated_image)
cv2.imshow(Cropped Image, cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()图像平移
import cv2
import numpy as np
import matplotlib.pyplot as pltimg cv2.imread(image.jpg)
H np.float32([[1,0,100], # 创建变换矩阵,100:沿x轴移动距离 50:沿y轴移动距离[0,1,50]])
rows,cols img.shape[:2] # 取图片的行数和列数(开始到2之间即shape[0] shape[1])
newImg cv2.warpAffine(img,H,(rows,cols)) # 仿射变换# img:变换前图像# H:变换矩阵# (rows,cols)):变换后的大小
plt.subplot(121) # 子图 1行2列1象限
plt.imshow(img)
plt.subplot(122) # 子图 1行2列2象限
plt.imshow(newImg)
plt.show() # 显示 matplotlib图cv2.warpAffine() 是 OpenCV 中用于执行仿射变换的函数之一。它可以用来对图像进行平移、旋转、缩放等操作
import cv2
import numpy as np# 读取图像
image cv2.imread(input_image.jpg)# 定义平移矩阵这里将图像向右平移100像素向下平移50像素
tx 100
ty 50
translation_matrix np.float32([[1, 0, tx],[0, 1, ty]])# 执行仿射变换
translated_image cv2.warpAffine(image, translation_matrix, (image.shape[1], image.shape[0]))# 显示原始图像和平移后的图像
cv2.imshow(Original Image, image)
cv2.imshow(Translated Image, translated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()图像增强
图像增强是指通过调整图像的亮度、对比度、饱和度等参数来改善图像质量。
使用OpenCV库的cv2.convertScaleAbs()函数来增强图像的对比度。
import cv2# 打开图像
image cv2.imread(example.jpg)# 增强对比度
enhanced_image cv2.convertScaleAbs(image, alpha1.5, beta0)# 显示增强后的图像
cv2.imshow(Enhanced Image, enhanced_image)
cv2.waitKey(0)
cv2.destroyAllWindows()图像复原
图像复原是指通过去除噪声、模糊等失真来恢复图像的原始质量。
使用OpenCV库的cv2.fastNlMeansDenoisingColored()函数来去除图像中的噪声。
import cv2# 打开图像
image cv2.imread(noisy_image.jpg)# 去除噪声
denoised_image cv2.fastNlMeansDenoisingColored(image, None, 10, 10, 7, 21)# 显示去除噪声后的图像
cv2.imshow(Denoised Image, denoised_image)
cv2.waitKey(0)
cv2.destroyAllWindows()图像旋转
import cv2
import matplotlib.pyplot as pltimg cv2.imread(image.jpg)
rows,cols img.shape[:2]M cv2.getRotationMatrix2D((cols/2,rows/2),45,1) # 2D矩阵旋转变换# 参1:旋转中心 参2:旋转角度 参3缩放比例
newImg cv2.warpAffine(img,M,(rows,cols)) # 仿射变换plt.subplot(121)
plt.imshow(img)
plt.subplot(122)
plt.imshow(newImg)
plt.show()图像拉伸
import cv2
import numpy as np
import matplotlib.pyplot as pltimg cv2.imread(image.jpg)
rows,cols img.shape[:2]pts1 np.float32([[50,50],[200,50],[50,200]]) # 变换前位置(通过三个点 来确定)
pts2 np.float32([[10,100],[200,50],[100,250]]) # 变换后位置(通过三个点 来确定)
M cv2.getAffineTransform(pts1, pts2) # 仿射变换(参1:变换前位置 参2:变换后位置)res cv2.warpAffine(img,M,(rows,cols))
plt.subplot(121)
plt.imshow(img)
plt.subplot(122)
plt.imshow(res)
plt.show()图像滤波
图像滤波是图像处理中的一个基础任务用于去除图像中的噪声和细节增强感兴趣的结构。 使用OpenCV库的cv2.fastNlMeansDenoisingColored()函数来去除图像中的噪声。
import cv2# 打开图像
image cv2.imread(noisy_image.jpg)# 去除噪声
denoised_image cv2.fastNlMeansDenoisingColored(image, None, 10, 10, 7, 21)# 显示去除噪声后的图像
cv2.imshow(Denoised Image, denoised_image)
cv2.waitKey(0)
cv2.destroyAllWindows()图像特征提取
图像特征提取是从图像中提取有用的信息如边缘、角点、形状等。这些特征可以用于图像识别、图像检索等。
使用OpenCV库的cv2.Canny()函数来提取图像的边缘特征。
import cv2# 打开图像
image cv2.imread(image_with_edges.jpg)# 应用边缘检测
edges cv2.Canny(image, 100, 200)# 显示边缘检测后的图像
cv2.imshow(Edges, edges)
cv2.waitKey(0)
cv2.destroyAllWindows()图像分割
图像分割是将图像分成多个部分的过程每个部分代表图像中的一个对象或区域。
使用OpenCV库的cv2.inRange()函数来根据颜色对图像进行分割。
import cv2# 打开图像
image cv2.imread(colorful_image.jpg)# 创建颜色范围
lower_red (0, 50, 50)
upper_red (10, 255, 255)# 应用颜色分割
mask cv2.inRange(image, lower_red, upper_red)# 显示分割后的图像
cv2.imshow(Mask, mask)
cv2.waitKey(0)
cv2.destroyAllWindows()