OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】

这篇具有很好参考价值的文章主要介绍了OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

马赛克效果

马赛克指现行广为使用的一种图像(视频)处理手段,此手段将影像特定区域的色阶细节劣化并造成色块打乱的效果,因为这种模糊看上去有一个个的小格子组成,便形象的称这种画面为马赛克。其目的通常是使之无法辨认。

下面,我们来介绍一下实现马赛克的思路!

假设我们将要打马赛克的区域按照4x4进行划分,我们就会得到如下左图的样子!

接下来我们要干的就是让这个4x4块内的所有像素点的颜色值都和第一个像素点的值一样.

经过运算之后,我们整个4x4块内的所有像素点就都成了黄色! 从而掩盖掉了原来的像素内容!

OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】,opencv,opencv,人工智能,计算机视觉

OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】,opencv,opencv,人工智能,计算机视觉

 代码实现:

import cv2
import matplotlib.pyplot as plt
def imgshow(img):
    img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    plt.imshow(img)
    plt.show()

import numpy as np
img = cv2.imread("/Users/guojun/Desktop/01.jpg")
shape = img.shape
masaike_img = np.copy(img)
offset=10
for row in range(0,shape[0],offset):
    for col in range(0,shape[1],offset):
        color = img[row,col]
        masaike_img[row:row+offset,col:col+offset]=color
        
imgshow(masaike_img)

毛玻璃效果

毛玻璃的效果和我们前面讲过的马赛克效果其实是非常相似的, 只不过毛玻璃效果是从附近的颜色块中,随机的去选择一个颜色值作为当前像素点的值!

我们还是以4x4的块大小为例,当我们去遍历每个像素点的时候, 当前像素点的颜色值,我们随机从它附近4x4的区域内选择一个颜色值作为当前像素点的值!

OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】,opencv,opencv,人工智能,计算机视觉

OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】,opencv,opencv,人工智能,计算机视觉

代码实现

import cv2
import matplotlib.pyplot as plt
def imgshow(img):
    img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    plt.imshow(img)
    plt.show()

import numpy as np
import random
img = cv2.imread("/Users/guojun/Desktop/01.jpg")
shape = img.shape
maoboli_img = np.copy(img)
for row in range(shape[0]):
    for col in range(shape[1]):
        offset = random.randint(0,10)
        color_row = row+offset
        color_col = col+offset
        if color_row>= shape[0]:
            color_row=shape[0]-1
        if color_col>=shape[1]:
            color_col=shape[1]-1
        color = img[color_row,color_col]
        maoboli_img[row,col] = color
imgshow(maoboli_img)

浮雕效果

梯度

前面我们做过一个毛玻璃效果的图片, 其实原理很简单对吧,我们只需要让当前像素点的颜色和附近像素点的颜色一致就可以了! 这样带来的效果其实是图片变得模糊.

那么模糊图片和清晰图片之间的差异是什么呢? 从视觉角度来讲, 图像模糊是因为图像中物体的边缘轮廓不明显,就好比一个近视的同学,摘下眼镜看东西,整个世界的轮廓都是模糊的. 再进一步理解就是物体边缘灰度变化不强烈,层次感不强造成的! 那么反过来, 如果物体轮廓边缘灰度变化明显些, 层次感强些图像不就是清晰一些了吗?

这种灰度变化明不明显强不强烈该如何定义呢 ? 我们学过微积分, 微分就是求函数的变化率,即导数(梯度). 其实梯度我们可以把它理解为颜色变化的强度, 更直白一点说梯度相当于是2个相邻像素之间的差值!

OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】,opencv,opencv,人工智能,计算机视觉

我们先看第一行数据, 在X轴方向上,颜色值都为100,我们并没有看到任何的边缘

但是在Y轴方向上, 我们可以看到100和50之间有明显的边缘,其实这个就是梯度

浮雕效果相信大家都有比较熟悉,在opencv中我们想要实现浮雕效果,只需套用如下公式即可:

gray = gray0-gray1+120

其中,相邻像素值之差可以体现边缘的突变或者称为梯度

末尾加上120只是为了增加像素值的灰度.

当然,在这个运算的过程中,我们还需要注意计算结果有可能小于0或者大于255

OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】,opencv,opencv,人工智能,计算机视觉文章来源地址https://www.toymoban.com/news/detail-851035.html

代码实现 
import cv2
import matplotlib.pyplot as plt
def imgshow(img):
    img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    plt.imshow(img)
    plt.show()

import numpy as np
import random
img = cv2.imread("/Users/guojun/Desktop/01.jpg",cv2.IMREAD_COLOR)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
width,height = img.shape
print(width,height)
fudiao_img = np.zeros_like(img)
for row in range(width):
    for col in range(height-1):
        gray0 = img[row,col]
        gray1 = img[row,col+1]
        gray = int(gray0)-int(gray1)+120
        if gray<0:
            gray = 0 
        if gray>255:
            gray = 255
        fudiao_img[row,col] = gray

imgshow(fudiao_img)

到了这里,关于OpenCV轻松入门(六)——简单图片处理【马赛克、毛玻璃、浮雕效果】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Qt开发_调用OpenCV(4.x)完成人脸检测并绘制马赛克(摄像头实时数据)

    这个基于Qt和OpenCV的人脸检测和人脸打码项目是通过实时视频流中的人脸识别来保护隐私。 该项目目的是保护隐私并确保人脸数据安全。在某些情况下,使用实时视频流进行人脸检测和识别可能涉及对个人隐私的侵犯。通过在图像中打码人脸区域,可以避免未经许可的人脸出

    2024年02月06日
    浏览(58)
  • 神器 | 教你去除视频马赛克

    大家有时候看一些视频教材或者图片的时候,有些比较隐私的会做打码处理,其实去马赛克这个事,一直都是一个令大家比较头疼的问题。 相信很多小伙伴也会发现,无论是图片还是视频,都不可能完美得去除掉,至少目前可以这么说。 今天小呆分享的这款可以一定程度上

    2024年02月09日
    浏览(167)
  • Pooling与马赛克的秘密

      说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Pooling在中文当中的意思是“池化”,在神经网络当中非常常见,通常用的比较多的一种是Max Pooling,具体操作如下图:    结合图像理解,相信你也会大概明白其中的本意。不过Pooling并不是只可以选取2x2的窗口大小,

    2024年02月05日
    浏览(43)
  • FFmpeg进阶-给视频添加马赛克效果

    很多时候为了隐藏视频中的敏感信息如人脸、身份证号、车牌号等,我们会采用马赛克算法对视频帧中的一部分内容进行处理。这里介绍一下如何采用FFmpeg实现马赛克效果。 马赛克效果算法的原理如下: 1.分块处理:首先将图像划分为多个小块或区域 2.像素替换:对于每个小块,

    2024年02月21日
    浏览(49)
  • ps导出bmp|jpg马赛克

    ps导入图片-滤镜-像素化-马赛克 图像-模式-索引颜色-确定合并 文件-存储为-导出bmp格式 备注: 封面来源于免费素材网2.8 million+ Stunning Free Images to Use Anywhere - Pixabay - Pixabay ai马赛克网站PixelMe : Convert your photo into pixelart. (pixel-me.tokyo))

    2024年02月12日
    浏览(46)
  • ArcGIS三体阴影(影像三维)显示马赛克?

    我们经常基于ArcGIS通过DEM来做山体阴影 但是有时候你一放大就会出现很强的马赛克的效果 还有我们在利用ArcScene建三维场景 即使数据分辨率很高也会出现马赛克效果 那怎么来解决这个问题呢 让我们的山体阴影显示更加细腻 三维没有马赛克的效果呢? 右键图层选择如下显示

    2024年02月01日
    浏览(43)
  • AI 绘画 | Stable Diffusion 去除照片马赛克

    本篇文章教会你如何让几秒钟去除图片中的马赛克,还是依托于Stable Diffusion WEB UI的强大扩展插件ControlNet,快来学起来吧,如果有问题请在评论区留言。 首先在图生图,选择一个写实风格的大模型(我这里选择是majicMIX realistic 麦橘写实_v7.safetensors,你也可以到 https://www.libli

    2024年02月03日
    浏览(62)
  • 【Unity ShaderGraph】| 如何快速制作一个 马赛克效果 实战

    前言 本文将使用Unity 的ShaderGraph制作一个 马赛克 的效果,可以直接拿到项目中使用。 对ShaderGraph还不了解的小伙伴可以参考这篇文章:【Unity ShaderGraph】| Shader Graph入门介绍 | 简介 | 配置环境 | 窗口介绍 | 简单案例 下面就开始看一下具体的制作流程,然后自己动手制作一个吧

    2024年02月08日
    浏览(64)
  • ffmpeg 如何剔除掉视频中的水印和马赛克

    FFmpeg 是一款功能强大的用于处理音视频的开源软件,可以用它来剔除视频中的水印和马赛克。具体实现方法如下: 剔除视频中的水印:FFmpeg 可以使用 maskfilter 滤镜来剔除视频中的水印。例如,以下命令可以去除视频中的水印,假设水印区域为 (x,y,w,h): 其中, -filter_complex

    2024年02月11日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包