zoukankan      html  css  js  c++  java
  • Python的OpenCV库

    安装:

    pip install opencv-python

    用opencv处理一些图片。

    # 图片加载:

     1 import cv2
     2 # 图片加载
     3 def read_image():
     4     img = cv2.imread('1.jpg') # 加载图片
     5     cv2.namedWindow('input', cv2.WINDOW_AUTOSIZE) # 默认大小
     6     cv2.imshow('input', img) # 显示图片
     7     cv2.waitKey(0) # 等待按键,单位为毫秒,0表示无限等待按键
     8     cv2.destroyAllWindows() # 销毁
     9 
    10 read_image()

    # 保持图片细节进行缩放

     1 import cv2
     2 
     3 # 图片缩放,在保持图片细节不变的前提下,把图片进行放大或者缩小
     4 img = cv2.imread('1.jpg') # 加载图片
     5 height, width, channel = img.shape # 获取图像的参数,分别表示长高和通道数
     6 print('原始尺寸为:', height, width, channel) # 333 550 3
     7 
     8 # 用resize方法将图片进行等比缩放
     9 new_h = int(height / 2) # 定义高度
    10 new_w = int(width / 2) # 定义宽度
    11 resize = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR) # 缩放,进去的时候是宽高
    12 cv2.imwrite('half_pic.jpg', resize) # 保存
    13 
    14 # 读出来看看是否一致
    15 img1 = cv2.imread('half_pic.jpg')
    16 h, w, c = img1.shape # 读出来的时候是,高,宽
    17 print("缩半后的图片尺寸为:", w, h)

    # 对图片进行裁切

     1 import cv2
     2 
     3 # 对图片进行裁切
     4 img = cv2.imread('1.jpg') # 读取图像
     5 height, width, channel = img.shape #获取参数
     6 print(height, width, channel)
     7 
     8 # 要裁切的矩阵
     9 x0, y0 = 100, 10
    10 x1, y1 = 200, 100
    11 
    12 # img是一个按行扫描的矩阵
    13 res = img[y0:y1, x0:x1]
    14 print('截取后 h, w = ', img[:2])
    15 cv2.imwrite('pic.jpg', res)

    # 图像拼接,组合,水印

     1 import cv2
     2 
     3 
     4 # 首先读取原始图片
     5 image = cv2.imread('1.jpg')
     6 (h, w) = image.shape[:2] # 切片
     7 print('原始图片尺寸:', image.shape) # 打印尺寸
     8 
     9 # 读取要嵌入的图片
    10 syimage = cv2.imread('sy.png') # 透明图层的图片
    11 (sy_h, sy_w) = syimage.shape[:2]
    12 print('水印图片尺寸:', syimage.shape)
    13 
    14 # 定义原图片选区
    15 roi = image[h-sy_h:w-sy_w]
    16 
    17 # 原图片区和水印区重合,让水印透明
    18 for y in range(sy_h):
    19         for x in range(sy_w):
    20             p = syimage[y, x]
    21             if (p[0], p[1], p[2]) == (0, 0, 0):
    22                 syimage[y, x] = roi[y, x]
    23 cv2.imwrite('shuiyin+roi.png', syimage)
    24 
    25 # 选区范围设定为融合后的水印
    26 image[h - sy_h: h, w - sy_w: w] = syimage
    27 # 最后写入
    28 cv2.imwrite('last.jpg', image)

    逐梦很累,坚持加油。

  • 相关阅读:
    Selenium简单测试页面加载速度的性能(Page loading performance)
    Selenium Page object Pattern usage
    Selenium如何支持测试Windows application
    UI Automation的两个成熟的框架(QTP 和Selenium)
    分享自己针对Automation做的两个成熟的框架(QTP 和Selenium)
    敏捷开发中的测试金字塔(转)
    Selenium 的基础框架类
    selenium2 run in Jenkins GUI testing not visible or browser not open but run in background浏览器后台运行不可见
    eclipse与SVN 结合(删除SVN中已经上传的问题)
    配置Jenkins的slave节点的详细步骤适合windows等其他平台
  • 原文地址:https://www.cnblogs.com/mafu/p/15529216.html
Copyright © 2011-2022 走看看