Python opencv 图像特效处理

发表于:2022-12-02 10:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:算法工程师的学习日志    来源:稀土掘金

  1、灰度处理
  将cv2.imread()方法的第二参数设为0即可得到灰色图像。
  import cv2
  img0 = cv2.imread('1.jpg', 0)
  img1 = cv2.imread('1.jpg', 1)
  print(img0.shape)
  print(img1.shape)
  cv2.imshow('img0', img0)
  cv2.waitKey(0)
  通过cv2.cvtColor方法对图像进行灰度转换。
  cv2.cvtColor(src, code, dst, dstCN):
  -src: 目标图像-code: 颜色转换方式-dst: 图像大小-dstCN:?颜色通道大小
  import cv2
  img = cv2.imread('1.jpg', 1)
  dat = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY )
  cv2.imshow('dat', dat)
  cv2.waitKey(0)
  灰色图像的所有颜色通道的值相等,所以要想将彩色图像变为灰色图像,只需将他们颜色通道的值相等即可。
  通过设置图片的颜色均值来使彩色图像变为灰色图像:
  import cv2
  import numpy as np
  img = cv2.imread('1.jpg', 1)
  dat = np.zeros((img.shape[0], img.shape[1]), np.uint8)
  for i in range(0, img.shape[0]):
      for j in range(0, img.shape[1]):
          (b, g, r) = img[i, j]
          gray = (int(b) + int(g) + int(r)) / 3
          dat[i, j] = np.uint(gray)
  cv2.imshow('dat', dat)
  cv2.waitKey(0)
  2、颜色反转
  将图像的颜色反转也就是让255减去当前的颜色值。
  import cv2
  import numpy as np
  img = cv2.imread('1.jpg', 1)
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  dat = np.zeros((img.shape[0], img.shape[1]), np.uint8)
  for i in range(gray.shape[0]):
      for j in range(gray.shape[1]):
          dat[i, j] = 255 - gray[i, j]
  cv2.imshow('dat', dat)
  cv2.waitKey(0)
  彩色图像的颜色反转也是一样的道理。
  import cv2
  import numpy as np
  img = cv2.imread('1.jpg', 1)
  dat = np.zeros((img.shape[0], img.shape[1], img.shape[2]), np.uint8)
  for i in range(img.shape[0]):
      for j in range(img.shape[1]):
          (b, g, r) = img[i, j]
          dat[i, j] = (255 - b, 255 - g, 255 - r)
  cv2.imshow('src', img)
  cv2.imshow('dat', dat)
  cv2.waitKey(0)
  3、马赛克
  原理: 取一个指定大小的窗口,将该窗口填充为一个颜色。
  下面将窗口设置为10*10来生成一个马赛克图像。
  import cv2
  img = cv2.imread('1.jpg', 1)
  height = img.shape[0]
  width = img.shape[1]
  for m in range(100, 200):
  for n in range(200, 300):
  if m % 10 == 0 and n % 10 == 0:
  for i in range(10):
      for j in range(10):
          (b, g, r) = img[m, n]
          img[m + i, n + j] = (b, g, r)
  cv2.imshow('img', img)
  cv2.waitKey(0)
  4、毛玻璃效果
  原理: 将当前的像素颜色随机设置为窗口中的一个颜色。
  这里设置窗口为8*8来生成一个毛玻璃图像。
  import cv2
  import random
  import numpy as np
  img = cv2.imread('1.jpg', 1)
  height = img.shape[0]
  width = img.shape[1]
  dat = np.zeros(img.shape, np.uint8)
  for m in range(height - 8):
      for n in range(width - 8):
          index = int(random.random() * 8)
          (b, g, r) = img[m + index, n + index]
          dat[m, n] = (b, g, r)
  cv2.imshow('dat', dat)
  cv2.waitKey(0)
  5、图像融合
  图片乘以比例系数相加得到俩张图片的融合效果,公式如下:
  target?=?src1?*?a?+src2?*?(1?-?a)
  cv2.addWeighted(src1, alpha, src2, beta, gamma):
  import cv2
  import numpy as np
  img1 = cv2.imread('1.jpg', 1)
  img2 = cv2.imread("2.jpg", 1)
  img3 = cv2.resize(img2, (img1.shape[1], img1.shape[0]), interpolation=cv2.INTER_AREA)
  dat = np.zeros(img1.shape, np.uint8)
  dat = cv2.addWeighted(img1, 0.8, img3, 0.2, 0)
  cv2.imshow('dat', dat)
  cv2.waitKey(0)
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号