在OpenCV里,对图像的操作是最为基本的。接下来我们看一下图像对象的创建与赋值。
注:前文介绍过的代码和操作不再重复。
代码
在 main 文件中,先导入新的模块
# 导入 numpy 模块,重命名为 np
import numpy as np
再写进以下代码:
# 第三节课 图像对象的创建与赋值
def mat_demo():image = cv.imread('C:/Users/28267/Desktop/Python/Py_OpenCV481/python_opencv_quick_tutorial/image/3.jpg')if image is None:print("错误: 未发现图像或者图像不能被加载.")# 计算新的图像尺寸width = int(image.shape[1] * 0.2)height = int(image.shape[0] * 0.2)dim = (width, height)# 缩小图像resized_image = cv.resize(image, dim, interpolation=cv.INTER_AREA)# h, w, c = resized_image.shape# 打印图像尺寸以及通道数print(resized_image.shape)# 打印 resized_image 图像的数值print(resized_image)# 截取 resized_image 图像的高(100:400),宽(60:280)所组成的矩形区域,给roiroi = resized_image[100:400, 60:280]# 创建一个宽,高,通道数和 resized_image 一样,但数值全为零的图像blankblank = np.zeros_like(resized_image)# blank = np.zeros((h, w, c), dtype=np.uint8)# 把图像 resized_image 的部分区域截取到 blank 同样的区域blank[100:400, 60:280, :] = resized_image[100:400, 60:280, :]# 拷贝 roi 到 copy_imagecopy_image = np.copy(roi)# 显示图像cv.imshow("roi", roi)cv.imshow("copy", copy_image)cv.imshow("blank", blank)cv.imshow("resized_image", resized_image)cv.waitKey(0)cv.destroyAllWindows()
最后,在主函数中修改我们这节课的函数 mat_demo ,如下:
# 主函数运行函数 color_space_demo
if __name__ == "__main__":mat_demo()
运行后,效果如下: