import cv2
#cv版本
print('OpenCV version:', cv2.__version__)
import matplotlib.pyplot as plt
path = 'img/'
file_name = 'sven-hornburg-TAVB-2C6uyE-unsplash.jpeg'
#加载
img = cv2.imread(path + file_name)
print(img.shape) # h w c ,高,宽,通道数。坐标原点在左上角
#位于图像矩阵表示的第 1968 行和第 2968 列交叉点的像素的 R、G、B 通道的强度
B, G, R = img[1968][2968]
print(R,G,B)
file_name = 'hans-ripa-kKR_KmRHaVw-unsplash.jpeg'
img = cv2.imread(path + file_name)
#cv 默认是GBR,现在改成RGB
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#选择图像的矩阵表示中位于从 2196 到 2895 范围内的行和从 3340 到 3929 包括在内的范围内的列的交点处的像素子矩阵
crop_img = RGB_img[2196:2895, 3340:3929]
plt.imshow(crop_img)
plt.show()
file_name = 'fabian-medrano-6cVF-qE0NF4-unsplash.jpeg'
img = cv2.imread(path + file_name)
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#按原高宽比缩放到宽位720
h, w, c = RGB_img.shape
new_width = 720
k = float(w) / h
print('原始高宽比:',k)
dim = (new_width, int(new_width / k))
resized_RGB_img = cv2.resize(RGB_img, dim, interpolation = cv2.INTER_AREA)
print(resized_RGB_img.shape)
#存储图像
path = ''
file_name = 'imge.jpg'
cv2.imwrite(path + file_name, cv2.cvtColor(resized_RGB_img, cv2.COLOR_RGB2BGR))
import os
#查看压缩后文件大小
print(os.path.getsize(path+file_name))
#将压缩图像的通道 B 强度提高 13%。 强度不能超过255
for i in range(540):
for j in range(720):
resized_RGB_img[i,j,2]=int(resized_RGB_img[i,j,2]*1.13)
if resized_RGB_img[i,j,2] >255:
resized_RGB_img[i,j,2]=255
print(resized_RGB_img[286,367])
# 旋转 ,负数顺时针,正数相反,
h, w, c = RGB_img.shape
center = (w // 2, h // 2)
#第三个参数调整缩放
M = cv2.getRotationMatrix2D(center, -45, 0.7)
rotated_RGB_img = cv2.warpAffine(RGB_img, M, (w, h))
plt.imshow(rotated_RGB_img)
plt.show()
#生成灰度图像
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(gray_image, cmap='gray')
plt.show()
#生成二值图像
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(gray_image, cmap='gray')
plt.show()
#自适应阀值二值化
th3 = cv2.adaptiveThreshold(gray_image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
plt.imshow(th3, cmap='gray')
plt.show()
使用python opencv基本函数处理图像
于 2022-03-13 08:14:47 首次发布