当前位置: 首页 > news >正文

畜牧网站建设小程序和网站开发难度

畜牧网站建设,小程序和网站开发难度,高端网站制作上海,做poster网站图像到卡通 一、说明 在当今世界,我们被图像和视频所包围。从社交媒体到广告,图像已成为一种强大的交流媒介。但是你有没有想过,如果你能把你的照片变成卡通会发生什么?想象一下,为您最喜欢的照片创建动画版本&#xf…
图像到卡通

一、说明

        在当今世界,我们被图像和视频所包围。从社交媒体到广告,图像已成为一种强大的交流媒介。但是你有没有想过,如果你能把你的照片变成卡通会发生什么?想象一下,为您最喜欢的照片创建动画版本,或者将肖像转换为异想天开的插图。

        在本文中,我们将探讨如何使用 Python 中的 OpenCV 库将图像转换为卡通。OpenCV 是一个功能强大的计算机视觉库,为图像和视频处理提供了广泛的功能,包括边缘检测、颜色转换和过滤。我们将使用这些工具在给定的图像上创建卡通效果。

        为此,我们将首先导入必要的模块并加载输入图像。接下来,我们将对图像应用一系列转换,包括边缘检测、颜色量化和双边滤波。最后,我们将结合这些转换,在输入图像上创建卡通效果。在整篇文章中,我们将提供有关如何使用 OpenCV 实现每个转换的分步说明。在本文结束时,您将清楚地了解如何使用 OpenCV 在任何输入图像上创建卡通效果。因此,让我们深入了解如何使用OpenCV将图像转换为卡通!

二、导入必要的库 

import cv2
import numpy as np
import os

2.1 代码说明:

  • import cv2导入 OpenCV 库,该库为图像和视频处理提供了广泛的功能。
  • import numpy as np导入 NumPy 库,这是一个流行的库,用于在 Python 中处理数组和矩阵。
  • import os导入操作系统模块,该模块提供了一种与文件系统交互的方法。

总的来说,这段代码导入了在 Python 中使用 OpenCV 执行图像处理的必要模块。

2.2 在 Python 中使用 OpenCV 显示输入图像:

img = cv2.imread('original_picture.jpg')
cv2.imshow("original", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

原始图片

2.3 代码说明:

  • cv2.imread('original_picture.jpg')将名为“original_picture.jpg”的输入图像加载到名为 的变量中。这是您想要的图片的名称。img
  • cv2.imshow("original", img) 在标题为“原始”的窗口中显示输入图像。
  • cv2.waitKey(0)等待按键。参数 0 表示程序将无限期等待,直到按下某个键。
  • cv2.destroyAllWindows() 关闭所有打开的窗口。

三、使用 K 均值聚类进行颜色量化:

def color_quantization(img, k):
# Transform the imagedata = np.float32(img).reshape((-1, 3))# Determine criteriacriteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 20, 0.001)# Implementing K-Meansret, label, center = cv2.kmeans(data, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)center = np.uint8(center)result = center[label.flatten()]result = result.reshape(img.shape)return result

3.1 功能说明:

  • 该函数采用两个参数 — 输入图像和聚类数。imgk
  • 输入图像首先使用 NumPy 库转换为像素值的二维数组。
  • 为 K-Means 聚类分析算法确定一组条件,包括聚类中心的最大迭代次数和最小变化。
  • K 均值聚类分析算法使用 cv2.kmeans() 函数应用于数据,具有指定数量的聚类和条件。如果变量发生变化,该函数将生成具有不同数量颜色簇的新量化图像。较小的值 将导致具有较少颜色的量化图像,而较大的值 将导致具有更多颜色的量化图像。kkk
  • 生成的聚类中心使用 NumPy 函数转换为 8 位整数。np.uint8()
  • 原始图像被展平为像素值的一维数组,每个像素被分配到其最近的聚类中心。
  • 然后将生成的像素值数组重新塑造回原始输入图像的形状。
  • 生成的量化图像作为函数的输出返回。

3.2 创建边缘遮罩:

def edge_mask(img, line_size, blur_value):gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)gray_blur = cv2.medianBlur(gray, blur_value)edges = cv2.adaptiveThreshold(gray_blur, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, line_size, blur_value)return edges

3.3 功能说明:

  • 该函数有三个参数——输入图像、蒙版中线条的大小和应用于灰度图像的模糊程度。如果变量发生变化,掩码中线条的大小也会相应更改。较小的值将导致更细的线条,而较大的值将导致较粗的线条。imgline_sizeblur_valueline_size
  • 首先使用该函数将输入图像转换为灰度。cv2.cvtColor()
  • 然后使用具有指定 .如果变量发生变化,应用于灰度图像的模糊级别将发生变化。较小的值将导致较少的模糊,而较大的值将导致更多的模糊。cv2.medianBlur()blur_valueblur_value
  • 通过使用该功能对模糊的灰度图像应用自适应阈值来创建边缘遮罩。这种自适应阈值方法根据每个像素周围局部邻域中像素值的平均值计算每个像素的阈值。cv2.adaptiveThreshold()
  • 生成的边缘掩码作为函数的输出返回。

四、从图像生成铅笔素描:

line_size = 7
blur_value = 7edges = edge_mask(img, line_size, blur_value)
cv2.imwrite('pencil_sketch.jpg', edges)
cv2.imshow('pencil sketch', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

铅笔素描

4.1 代码说明:

  • 代码首先将 和 的值设置为 7。如果 和 的值发生变化,则生成的铅笔素描将受到影响。较小的 值将导致线条越细,而较大的值将导致线条变粗。同样,较小的 值将导致较少的模糊,而较大的值将导致更多的模糊,这可能会影响铅笔草图的整体外观。line_sizeblur_valueline_sizeblur_valueline_sizeblur_value
  • 使用具有指定和 的函数从输入图像生成边缘掩码。imgedge_mask()line_sizeblur_value
  • 生成的边缘遮罩使用该函数保存为名为“pencil_sketch.jpg”的新图像文件。cv2.imwrite()
  • 然后使用该函数显示铅笔素描图像。cv2.imshow()
  • 程序等待使用该函数的用户按键。cv2.waitKey(0)
  • 最后,使用该功能关闭所有打开的窗口。cv2.destroyAllWindows()

4.2 从图像生成卡通:

total_color = 9
img = color_quantization(img, total_color)
cv2.imwrite('cartoonize.jpg', img)
cv2.imshow('Cartoonize', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

卡通化图片

4.3 代码说明:

  • 代码首先将值设置为 9。如果值发生变化,则生成的卡通图像将受到影响。较小的 值将导致较少的颜色,而较大的值将导致更多的颜色,这可能会影响卡通图像的整体外观。total_colortotal_colortotal_color
  • 调用该函数以将输入图像中的颜色数减少到指定的 。color_quantization()imgtotal_color
  • 生成的图像被保存为一个名为“cartoonize.jpg”的新图像文件使用该功能。cv2.imwrite()
  • 然后使用该功能显示卡通图像。cv2.imshow()
  • 程序等待使用该函数的用户按键。cv2.waitKey(0)
  • 最后,使用该功能关闭所有打开的窗口。cv2.destroyAllWindows()

五、对图像应用双边滤镜:

bilateral = cv2.bilateralFilter(img, 15, 75, 75)
# Save the output.
cv2.imwrite('blur.jpg', bilateral)
img = cv2.imread('blur.jpg')
cv2.imshow("Blur", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

双边滤波

5.1 代码说明:

  • 代码首先使用该函数将双边筛选器应用于输入图像。筛选器大小设置为 15,西格玛颜色和西格玛空间的值均设置为 75。imgcv2.bilateralFilter()
  • 更改双边滤镜的内核大小、西格玛颜色和西格玛空间的值将影响应用于图像的模糊级别。较小的内核大小和 sigma 值将导致较少的模糊,而较大的值将导致更多的模糊。更改这些值可能会更改生成的模糊图像的整体外观。
  • 生成的模糊图像被保存为一个名为“blur.jpg”的新图像文件,使用该功能。cv2.imwrite()
  • 然后使用该函数将模糊的图像加载回内存并分配给变量。cv2.imread()img

5.2 总输出:

5.3 另一种方式:

import cv2
import numpy as np# Load the input image
img = cv2.imread('input_image.jpg')# Apply bilateral filter to smooth the image
img_smooth = cv2.bilateralFilter(img, 9, 75, 75)# Convert the image to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Apply edge detection to the grayscale image
edges = cv2.Canny(gray, 100, 200)# Apply color quantization to the smoothed image
img_quant = cv2.cvtColor(img_smooth, cv2.COLOR_BGR2RGB)
Z = img_quant.reshape((-1,3))
Z = np.float32(Z)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 8
ret,label,center=cv2.kmeans(Z,K,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)
center = np.uint8(center)
res = center[label.flatten()]
res2 = res.reshape((img_quant.shape))# Combine the edges and color quantization to create the cartoon effect
cartoon = cv2.bitwise_and(res2, res2, mask=edges)# Display the output image and save it
cv2.imshow('Cartoon', cartoon)
cv2.waitKey(0)
cv2.destroyAllWindows()

        总之,使用 OpenCV 将图像转换为卡通是一种有趣且创造性的方式,可以为您的照片赋予新的生命。在本文中,我们讨论了如何使用 OpenCV 通过应用各种图像处理技术(如颜色量化、边缘检测和双边过滤)将图像转换为卡通。通过结合这些技术,我们能够从普通照片中制作出风格化的卡通图像。

        虽然本文中提供的代码是一个很好的起点,但有很多方法可以自定义转换过程以获得不同的结果。尝试不同的参数值或应用其他图像处理技术有助于创建独特且个性化的卡通风格图像。有了一点创造力和一些图像处理技术的知识,可能性是无穷无尽的。

http://www.yayakq.cn/news/833482/

相关文章:

  • 站点建设方案wordpress强制分享代码
  • 做国内网站花费北京美容网站建设
  • 怎么做建设网站首页深圳seo优化排名推广
  • 广州网站建设网站电脑自带的做网站叫什么软件
  • 注册证查询网站怎样给网站做app
  • 银川市建设局网站办公室设计说明万能模板
  • 用第三方做网站网络科技公司取名推荐
  • 建设项目环境登记表辽宁省网站南通网站流量优化
  • 河南省百城建设提质工程网站加工平台都有哪些
  • 电商网站开发需求网站优化seo推广服务
  • 中天银都建设集团网站做网站的工具有哪些
  • 除了dz论坛还能搭建什么网站网络游戏名字大全
  • 潮汕网站建设京津冀协同发展的路径主要涉及
  • 网站正在建设中9797网页设计师属于什么部门
  • 杭州网站前端建设公司网站做推广
  • 企业内部网站模板下载画册设计流程步骤
  • 兴仁市建设局网站jsp网站开发工具
  • 网站建设绩效考评做自己网站
  • 免费网站建设服务做一个网站成本是多少
  • 手机有些网站打不开怎么解决婚庆网站开发
  • 网站建设中 源码免费的个人主页空间
  • 企业网站建设的趋势wordpress 发布工具
  • 网网站建设公司咨询wordpress主题主页修改
  • 泰州做企业网站wordpress 文章行距
  • 宜兴网站优化建网站做seo
  • 品牌网站建设制作好的开源网站
  • 微信外链网站开发flash新手入门简单动画制作
  • 某一网站seo策划方案wordpress 删除的模板文件在哪
  • 广州市筑正工程建设有限公司网站网站域名备案认证
  • 公众号版影视网站开发wordpress微信域名回调