当前位置: 首页 > article >正文

OpenCV基础入门30讲(Python)——第三讲 图像对象的创建与赋值

        在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)所组成的矩形区域,给roi
    roi = resized_image[100:400, 60:280]
    # 创建一个宽,高,通道数和 resized_image 一样,但数值全为零的图像blank
    blank = 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_image
    copy_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()

运行后,效果如下:


http://www.kler.cn/a/314877.html

相关文章:

  • 爬虫补环境案例---问财网(rpc,jsdom,代理,selenium)
  • 微信小程序中使用离线版阿里云矢量图标
  • Flink1.19编译并Standalone模式本地运行
  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
  • Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)
  • 山泽光纤HDMI线:铜线的隐藏力量
  • 正点原子RK3588(二)——lenet测试和modelzoo模型
  • linux系统蓝牙框架
  • 查看VSFTPD配置的服务器路径和linux系统有哪些用户
  • 关于加强银行业保险业移动互联网应用程序管理的通知
  • 分布式光伏充换电站相关建议
  • 【MySQL】—— mysqlcheck表维护程序
  • 数据结构和算法|排序算法系列(五)|排序总结(时间复杂度和是否稳定)
  • 前端-js例子:定时器
  • HarmonyOS开发实战( Beta5.0)使用GTest测试C++案例
  • QT开发: Qt 框架中字符串核心类QString详解
  • ARM/Linux嵌入式面经(三五):诺瓦星云提前批
  • dpdk课程学习之练习笔记八(dpvs的了解)
  • unity3d入门教程九
  • 【Java】全面理解Java8特性
  • SpinalHDL之结构(三)
  • JavaScript高级—— js 是单线程运行的
  • 无人机+自组网:中继通信增强技术详解
  • 论文解读《MmAP : Multi-Modal Alignment Prompt for Cross-Domain Multi-Task Learning》
  • C#开发基础之单例模式下的集合数据,解决并发访问读写冲突的问题
  • PostgreSQL常用表操作SQL脚本整理