import cv2
import os
import numpy as np
# 1、读取图像
# imread()方法
# 设置图像的路径
Path = "./img.png"
# 设置读取颜色类型默认是1代表彩色图 0 代表灰度图
# 彩色图
flag = 1
# 灰度图
#flag = 0
# 读取图像,返回值是一个图像对象
image = cv2.imread(Path, flag)
# 0 ~ 255代表黑色到纯白色
# 打印该图像输出的是部分像素值
# print(image)
# 2、显示图像
# 显示图像
cv2.imshow("QQ", image)
# 等待按键按下,单位是ms
cv2.waitKey()
# 按下任意按键后摧毁所有窗口
cv2.destroyAllWindows()
# 3、保存图像
# 创建目录
# 在当前目录下创建一个目录
directory = "./My_Test_Photos"
# 如果不存在则创建
if not os.path.exists(directory):
os.makedirs(directory)
# 保存图像到指定目录
file_path = os.path.join(directory, "test01.jpg")
cv2.imwrite(file_path, image)
# 4、获取图像属性
# shape (垂直像素数 水平像素数 通道数)
# size (像素点总个数 = 垂直像素数 × 水平像素数 × 通道数) 灰度图通道数为 1
# dtype 图像的数据类型
image_Color = cv2.imread(Path,0)
print(image_Color.shape)
print(image_Color.size)
print(image_Color.dtype)
import cv2
image = cv2.imread("./cat.jpg")
cv2.imshow("cat", image)
for i in range(241, 292):
for j in range(168, 219):
image[i, j] = [255, 255, 255]
cv2.imshow("mycat", image)
cv2.waitKey()
cv2.destroyAllWindows()
import numpy as np
# 创建一维数组和二维数组
n1 = np.array([1, 2, 3])
n2 = np.array([0.1, 0.2, 0.3])
n3 = np.array([[1, 2], [3, 4]])
print(n1, n2, n3)
# 创建浮点数类型
my_list = [1, 2, 3]
n1 = np.array(my_list, dtype=np.float_)
# n1 = np.array(my_list, dtype=float)
print(n1)
print(n1.dtype)
print(type(n1[0]))
# 创建三维数组
nd1 = [1, 2, 3]
nd2 = np.array(nd1, ndmin=3)
print(nd2)
import numpy as np
# 指定维度数据类型未定义
n = np.empty([2, 3])
print(n)
# 创建全零数组
n1 = np.zeros((3, 3), dtype=np.uint8)
print(n1)
# 创建全一数组
ones = np.ones((4, 4), np.float_)
print(ones)
# 创建随机数组,三行三列,范围0-20
rand = np.random.randint(0, 20, (3, 3))
print(rand)
demo5
import cv2
import numpy as np
# 在opencv中黑白图像是一个二维数组,彩色图像是一个三维数组
# 创建黑白图像
flag = True
if flag:
width = 200
height = 100
img = np.zeros((height, width), np.uint8)
img[25:75, 50:100] = 255
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
else:
width = 200
height = 100
img = np.ones((height, width), np.uint8)*255
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
width = 200
height = 100
img = np.zeros((height, width), np.uint8)
for i in range(0, width, 40):
img[:, i+20] = 255
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
width = 200
height = 100
# 创建指定宽高、3通道、像素值都为0的图像
img = np.zeros((height, width, 3), np.uint8)
blue = img.copy()
blue[:, :, 0] = 255 # 通道1的所有像素值都为255
green = img.copy()
green[:, :, 1] = 255 # 通道2的所有像素值都为255
red = img.copy()
red[:, :, 2] = 255 # 通道3的所有像素值都为255
cv2.imshow("blue", blue)
cv2.imshow("green", green)
cv2.imshow("red", red)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
# 创建随机图像
width = 200
height = 100
img = np.random.randint(256, size=(height, width, 3), dtype=np.uint8)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
# 拼接图像
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])
result = np.hstack((a, b, c))
print(result)
import cv2
import numpy as np
# 垂直拼接
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])
result = np.vstack((a, b, c))
print(result)
import cv2
import numpy as np
Path = "./cat.jpg"
img = cv2.imread(Path)
img_h = np.hstack((img, img))
img_v = np.vstack((img, img))
cv2.imshow("img_h", img_h)
cv2.imshow("img_v", img_v)
cv2.waitKey()
cv2.destroyAllWindows()