python opencv png锯齿处理

这篇具有很好参考价值的文章主要介绍了python opencv png锯齿处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:使用opencv给图片加logo时,发现logo文字的边缘有很多锯齿。

opencv去锯齿,opencv,numpy,python,opencv,numpy

需求:消除锯齿,使图像更加平滑
情况一:图片本身就有锯齿

需要做的是图片平滑处理,中值滤波,高斯滤波(图片会变模糊),网上也有很多相关资料。(大家可以试试)

情况二:没有读取png图片的alpha通道,导致半透明的像素显示为透明,产生锯齿

处理方法:加水印的时候,每个像素去融合。(opencv的addWeighted方法只支持3通道的融合)

效果图:

opencv去锯齿,opencv,numpy,python,opencv,numpy

背景图尺寸要大于logo尺寸

import cv2
import numpy as np

tImg = cv2.imread("./img.png")
logo = cv2.imread("./img_0.png", cv2.IMREAD_UNCHANGED)
lgRows, lgCols, _ = logo.shape
lx = ly = 100

maxAl = 255
# 合并两个像素点的RGB


def mergePoint(px1, px2):
   dst = [0]*(len(px1))
   if (px2[3] == 0):
       return px1
   elif (px2[3] == 255):
       return px2[:3]
   else:
       for i in range(len(px1)):
           dst[i] = int(px1[i] * (maxAl - px2[3]) /
                        maxAl + px2[i] * (px2[3]/maxAl))
   return np.array(dst)


dst = [[[0 for c in range(3)]
       for c in range(lgCols)]for r in range(lgRows)]
dst = np.array(dst)
# 获取roi区域(需要做融合的长宽区域)
logoRoi = tImg[:lgRows, :lgCols]
for r in range(lgRows):
   for c in range(lgCols):
       dst[r][c] = np.array([0, 0, 0])
       dst[r][c] = mergePoint(logoRoi[r][c], logo[r][c])

tImg[:lgRows, :lgCols] = dst

cv2.imshow("merge", tImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
exit()

在网上没搜到类似的解法,做一个记录,大家有更好的方法,希望一起交流~文章来源地址https://www.toymoban.com/news/detail-518654.html

到了这里,关于python opencv png锯齿处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 抗锯齿 opencv

    目录 puttext line函数

    2024年01月25日
    浏览(2)
  • Python numpy库的应用、matplotlib绘图、opencv的应用
  • Python与Pytorch系列(二) 本文(1.8万字) | 解析Opencv, Matplotlib, PIL | 三者之间的转换 | 三者对JPG和PNG读取和写入 |

    点击进入专栏: 《人工智能专栏》 Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程 推荐网站 : OpenCV Matplotlib Pillow opencv的基本图像类型可以和numpy数组相互转化,因此可以直接调用 torch.from_numpy(img) 将图像转换成 t

    2024年02月03日
    浏览(42)
  • python numpy opencv调整图片亮度对比度饱和度

    (想要完整代码直接划到最后) 原理比较简单,本质上是对图像各个通道的每个像素点做线性变换,对超出范围[0,255]的做截断处理,所以使用numpy处理比较方便 一下函数为了

    2024年02月12日
    浏览(10)
  • python 安装、配置、使用 xlrd模块、numpy模块、matplotlib、opencv模块

    python 安装、配置、使用 xlrd模块、numpy模块、matplotlib、opencv模块

    目录  一、xlrd模块 (一)安装xlrd模块 (二) pycharm 配置xlrd (三) 读取xls格式 (四)xlrd读取时间日期时,会是float类型,需要转换。 二、numpy模块  (一)numpy模块安装---使用清华大学镜像进行安装即可 (二)pycharm配置时,numpy安装失败,且代码中出现 No module named \\\'numpy\\\' (1)

    2024年02月09日
    浏览(11)
  • opencv读写png

    opencv读写png

    [1] 测试了怎么手动加 alpha 通道设置透明度后,用 PIL.Image 存 png,通道顺序是 RGBA。这里测试用 opencv 读、写 1、3、4 通道的 png。 png 可以只存 3 通道的,即不要 alpha,也可以加上 alpha。而无 alpha 时 opencv 的通道顺序是 BGR,那加上 alpha 之后呢? blue.png blue_bgra.png 不加 alpha 就还

    2024年02月09日
    浏览(3)
  • python 数据、曲线平滑处理——基于Numpy.convolve实现滑动平均滤波——详解

    python 数据、曲线平滑处理——基于Numpy.convolve实现滑动平均滤波——详解

    滑动平均滤波法 (又称: 递推平均滤波法 ),它把连续取N个采样值看成一个队列 ,队列的长度固定为N ,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则) 。把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。 N值的选取:流量,N=

    2024年02月09日
    浏览(8)
  • 图像处理之高质量缩放(抗锯齿)

    图像处理之高质量缩放(抗锯齿)

     1.介绍     在做图像处理过程中,我们有时会将图像缩小之后再进行处理,常用的开源图像算法包“Opencv”已经带有resize函数,用起来也是很容易上手的。     对于Opencv中函数原型:cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])     参数:     interpolation - 插值方法,共有

    2024年02月04日
    浏览(98)
  • Python两种读取txt与csv文件方式(利用numpy处理数据)

    Python两种读取txt与csv文件方式(利用numpy处理数据)

    一共80个数据(只截取前10个数据) 在excel中显示的内容 在pycharm中显示的内容 一共80个数据 在记事本中显示的内容 在pycharm中显示的内容 1、读取所有内容 data_pd打印结果 2、数据转为numpy data_np打印结果 1、读取所有内容 data_pd打印结果 2、数据转为numpy data_np打印结果 1、读取所

    2023年04月11日
    浏览(35)
  • ubuntu22.04(opencv安装):python-dev、python-numpy、libdc1394-22-dev无法安装问题

    网上很多ubuntu安装opencv的教程在安装opencv依赖时出现无法定位的问题: 推荐使用以下命令安装依赖: sudo apt-get install python-dev-is-python3 python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-dev 仔细观察以下就发现哪里有区别了 建议以后出现这种问题多去googl

    2024年01月19日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包