• 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)

    逐梦很累,坚持加油。

  • 相关阅读:
    Android控件Editext、TextView属性详解
    修改Android签名证书keystore的密码、别名alias以及别名密码
    android 中如何限制 EditText 最大输入字符数
    keytool 错误 java.io.IOException: incorrect AVA format
    Android打包常见错误之Export aborted because fatal lint errors were found
    正则表达式之判断用户注册信息是否为汉字、字母和数字
    Android Dialog 系统样式讲解及透明背景
    Android中自定义Activity和Dialog的位置大小背景和透明度等
    字体在Android View中的输出 drawText
    怎么用CIFilter给图片加上各种各样的滤镜_1
  • 原文地址:https://www.cnblogs.com/mafu/p/15529216.html
Copyright © 2020-2023  润新知