国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【圖像處理】使用 OpenCV 將您的照片變成卡通

這篇具有很好參考價(jià)值的文章主要介紹了【圖像處理】使用 OpenCV 將您的照片變成卡通。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【圖像處理】使用 OpenCV 將您的照片變成卡通,圖像處理百匯園,opencv,人工智能,計(jì)算機(jī)視覺
圖像到卡通

一、說(shuō)明

????????在當(dāng)今世界,我們被圖像和視頻所包圍。從社交媒體到廣告,圖像已成為一種強(qiáng)大的交流媒介。但是你有沒有想過(guò),如果你能把你的照片變成卡通會(huì)發(fā)生什么?想象一下,為您最喜歡的照片創(chuàng)建動(dòng)畫版本,或者將肖像轉(zhuǎn)換為異想天開的插圖。

????????在本文中,我們將探討如何使用 Python 中的 OpenCV 庫(kù)將圖像轉(zhuǎn)換為卡通。OpenCV 是一個(gè)功能強(qiáng)大的計(jì)算機(jī)視覺庫(kù),為圖像和視頻處理提供了廣泛的功能,包括邊緣檢測(cè)、顏色轉(zhuǎn)換和過(guò)濾。我們將使用這些工具在給定的圖像上創(chuàng)建卡通效果。

????????為此,我們將首先導(dǎo)入必要的模塊并加載輸入圖像。接下來(lái),我們將對(duì)圖像應(yīng)用一系列轉(zhuǎn)換,包括邊緣檢測(cè)、顏色量化和雙邊濾波。最后,我們將結(jié)合這些轉(zhuǎn)換,在輸入圖像上創(chuàng)建卡通效果。在整篇文章中,我們將提供有關(guān)如何使用 OpenCV 實(shí)現(xiàn)每個(gè)轉(zhuǎn)換的分步說(shuō)明。在本文結(jié)束時(shí),您將清楚地了解如何使用 OpenCV 在任何輸入圖像上創(chuàng)建卡通效果。因此,讓我們深入了解如何使用OpenCV將圖像轉(zhuǎn)換為卡通!

二、導(dǎo)入必要的庫(kù)?

import cv2
import numpy as np
import os

2.1 代碼說(shuō)明:

  • import cv2導(dǎo)入 OpenCV 庫(kù),該庫(kù)為圖像和視頻處理提供了廣泛的功能。
  • import numpy as np導(dǎo)入 NumPy 庫(kù),這是一個(gè)流行的庫(kù),用于在 Python 中處理數(shù)組和矩陣。
  • import os導(dǎo)入操作系統(tǒng)模塊,該模塊提供了一種與文件系統(tǒng)交互的方法。

總的來(lái)說(shuō),這段代碼導(dǎo)入了在 Python 中使用 OpenCV 執(zhí)行圖像處理的必要模塊。

2.2 在 Python 中使用 OpenCV 顯示輸入圖像:

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

【圖像處理】使用 OpenCV 將您的照片變成卡通,圖像處理百匯園,opencv,人工智能,計(jì)算機(jī)視覺

原始圖片

2.3 代碼說(shuō)明:

  • cv2.imread('original_picture.jpg')將名為“original_picture.jpg”的輸入圖像加載到名為 的變量中。這是您想要的圖片的名稱。img
  • cv2.imshow("original", img)?在標(biāo)題為“原始”的窗口中顯示輸入圖像。
  • cv2.waitKey(0)等待按鍵。參數(shù) 0 表示程序?qū)o(wú)限期等待,直到按下某個(gè)鍵。
  • cv2.destroyAllWindows()?關(guān)閉所有打開的窗口。

三、使用 K 均值聚類進(jìn)行顏色量化:

def color_quantization(img, k):
# Transform the image
  data = np.float32(img).reshape((-1, 3))

# Determine criteria
  criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 20, 0.001)

# Implementing K-Means
  ret, 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 功能說(shuō)明:

  • 該函數(shù)采用兩個(gè)參數(shù) — 輸入圖像和聚類數(shù)。imgk
  • 輸入圖像首先使用 NumPy 庫(kù)轉(zhuǎn)換為像素值的二維數(shù)組。
  • 為 K-Means 聚類分析算法確定一組條件,包括聚類中心的最大迭代次數(shù)和最小變化。
  • K 均值聚類分析算法使用 cv2.kmeans() 函數(shù)應(yīng)用于數(shù)據(jù),具有指定數(shù)量的聚類和條件。如果變量發(fā)生變化,該函數(shù)將生成具有不同數(shù)量顏色簇的新量化圖像。較小的值 將導(dǎo)致具有較少顏色的量化圖像,而較大的值 將導(dǎo)致具有更多顏色的量化圖像。kkk
  • 生成的聚類中心使用 NumPy 函數(shù)轉(zhuǎn)換為 8 位整數(shù)。np.uint8()
  • 原始圖像被展平為像素值的一維數(shù)組,每個(gè)像素被分配到其最近的聚類中心。
  • 然后將生成的像素值數(shù)組重新塑造回原始輸入圖像的形狀。
  • 生成的量化圖像作為函數(shù)的輸出返回。

3.2 創(chuàng)建邊緣遮罩:

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 功能說(shuō)明:

  • 該函數(shù)有三個(gè)參數(shù)——輸入圖像、蒙版中線條的大小和應(yīng)用于灰度圖像的模糊程度。如果變量發(fā)生變化,掩碼中線條的大小也會(huì)相應(yīng)更改。較小的值將導(dǎo)致更細(xì)的線條,而較大的值將導(dǎo)致較粗的線條。imgline_sizeblur_valueline_size
  • 首先使用該函數(shù)將輸入圖像轉(zhuǎn)換為灰度。cv2.cvtColor()
  • 然后使用具有指定 .如果變量發(fā)生變化,應(yīng)用于灰度圖像的模糊級(jí)別將發(fā)生變化。較小的值將導(dǎo)致較少的模糊,而較大的值將導(dǎo)致更多的模糊。cv2.medianBlur()blur_valueblur_value
  • 通過(guò)使用該功能對(duì)模糊的灰度圖像應(yīng)用自適應(yīng)閾值來(lái)創(chuàng)建邊緣遮罩。這種自適應(yīng)閾值方法根據(jù)每個(gè)像素周圍局部鄰域中像素值的平均值計(jì)算每個(gè)像素的閾值。cv2.adaptiveThreshold()
  • 生成的邊緣掩碼作為函數(shù)的輸出返回。

四、從圖像生成鉛筆素描:

line_size = 7
blur_value = 7

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

【圖像處理】使用 OpenCV 將您的照片變成卡通,圖像處理百匯園,opencv,人工智能,計(jì)算機(jī)視覺

鉛筆素描

4.1 代碼說(shuō)明:

  • 代碼首先將 和 的值設(shè)置為 7。如果 和 的值發(fā)生變化,則生成的鉛筆素描將受到影響。較小的 值將導(dǎo)致線條越細(xì),而較大的值將導(dǎo)致線條變粗。同樣,較小的 值將導(dǎo)致較少的模糊,而較大的值將導(dǎo)致更多的模糊,這可能會(huì)影響鉛筆草圖的整體外觀。line_sizeblur_valueline_sizeblur_valueline_sizeblur_value
  • 使用具有指定和 的函數(shù)從輸入圖像生成邊緣掩碼。imgedge_mask()line_sizeblur_value
  • 生成的邊緣遮罩使用該函數(shù)保存為名為“pencil_sketch.jpg”的新圖像文件。cv2.imwrite()
  • 然后使用該函數(shù)顯示鉛筆素描圖像。cv2.imshow()
  • 程序等待使用該函數(shù)的用戶按鍵。cv2.waitKey(0)
  • 最后,使用該功能關(guān)閉所有打開的窗口。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()

【圖像處理】使用 OpenCV 將您的照片變成卡通,圖像處理百匯園,opencv,人工智能,計(jì)算機(jī)視覺

卡通化圖片

4.3 代碼說(shuō)明:

  • 代碼首先將值設(shè)置為 9。如果值發(fā)生變化,則生成的卡通圖像將受到影響。較小的 值將導(dǎo)致較少的顏色,而較大的值將導(dǎo)致更多的顏色,這可能會(huì)影響卡通圖像的整體外觀。total_colortotal_colortotal_color
  • 調(diào)用該函數(shù)以將輸入圖像中的顏色數(shù)減少到指定的 。color_quantization()imgtotal_color
  • 生成的圖像被保存為一個(gè)名為“cartoonize.jpg”的新圖像文件使用該功能。cv2.imwrite()
  • 然后使用該功能顯示卡通圖像。cv2.imshow()
  • 程序等待使用該函數(shù)的用戶按鍵。cv2.waitKey(0)
  • 最后,使用該功能關(guān)閉所有打開的窗口。cv2.destroyAllWindows()

五、對(duì)圖像應(yīng)用雙邊濾鏡:

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

【圖像處理】使用 OpenCV 將您的照片變成卡通,圖像處理百匯園,opencv,人工智能,計(jì)算機(jī)視覺

雙邊濾波

5.1 代碼說(shuō)明:

  • 代碼首先使用該函數(shù)將雙邊篩選器應(yīng)用于輸入圖像。篩選器大小設(shè)置為 15,西格瑪顏色和西格瑪空間的值均設(shè)置為 75。imgcv2.bilateralFilter()
  • 更改雙邊濾鏡的內(nèi)核大小、西格瑪顏色和西格瑪空間的值將影響應(yīng)用于圖像的模糊級(jí)別。較小的內(nèi)核大小和 sigma 值將導(dǎo)致較少的模糊,而較大的值將導(dǎo)致更多的模糊。更改這些值可能會(huì)更改生成的模糊圖像的整體外觀。
  • 生成的模糊圖像被保存為一個(gè)名為“blur.jpg”的新圖像文件,使用該功能。cv2.imwrite()
  • 然后使用該函數(shù)將模糊的圖像加載回內(nèi)存并分配給變量。cv2.imread()img

5.2 總輸出:

【圖像處理】使用 OpenCV 將您的照片變成卡通,圖像處理百匯園,opencv,人工智能,計(jì)算機(jī)視覺

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 將圖像轉(zhuǎn)換為卡通是一種有趣且創(chuàng)造性的方式,可以為您的照片賦予新的生命。在本文中,我們討論了如何使用 OpenCV 通過(guò)應(yīng)用各種圖像處理技術(shù)(如顏色量化、邊緣檢測(cè)和雙邊過(guò)濾)將圖像轉(zhuǎn)換為卡通。通過(guò)結(jié)合這些技術(shù),我們能夠從普通照片中制作出風(fēng)格化的卡通圖像。

????????雖然本文中提供的代碼是一個(gè)很好的起點(diǎn),但有很多方法可以自定義轉(zhuǎn)換過(guò)程以獲得不同的結(jié)果。嘗試不同的參數(shù)值或應(yīng)用其他圖像處理技術(shù)有助于創(chuàng)建獨(dú)特且個(gè)性化的卡通風(fēng)格圖像。有了一點(diǎn)創(chuàng)造力和一些圖像處理技術(shù)的知識(shí),可能性是無(wú)窮無(wú)盡的。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-611314.html

到了這里,關(guān)于【圖像處理】使用 OpenCV 將您的照片變成卡通的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【圖像處理】經(jīng)營(yíng)您的第一個(gè)U-Net以進(jìn)行圖像分割

    ????????AI廚師們,今天您將學(xué)習(xí)如何準(zhǔn)備計(jì)算機(jī)視覺中最重要的食譜之一:U-Net。本文將敘述:1 語(yǔ)義與實(shí)例分割,2 圖像分割中還使用了其他損失,例如Jaccard損失,焦點(diǎn)損失;3 如果2D圖像分割對(duì)您來(lái)說(shuō)太容易了,您可以查看3D圖像分割,因?yàn)槟P鸵蟮枚啵虼艘щy得

    2024年02月15日
    瀏覽(20)
  • Python|OpenCV-基本使用和圖像處理(1)

    前言 本文是該專欄的第1篇,后面將持續(xù)分享OpenCV計(jì)算機(jī)視覺的干貨知識(shí),記得關(guān)注。 OpenCV是基于開源許可的跨平臺(tái)計(jì)算機(jī) 視覺庫(kù) ,起初OpenCV是由Intel公司開發(fā)的,直到后面由非營(yíng)利組織進(jìn)行維護(hù)。提到OpenCV,就不得不說(shuō)它提供了大量的圖像和視頻處理函數(shù),使得計(jì)算機(jī)視覺

    2024年02月12日
    瀏覽(110)
  • 使用Python和OpenCV進(jìn)行圖像處理和分析

    簡(jiǎn)介: 圖像處理和分析是計(jì)算機(jī)視覺領(lǐng)域的重要組成部分。本文將介紹如何使用Python編程語(yǔ)言和OpenCV庫(kù)進(jìn)行圖像處理和分析。我們將涵蓋圖像讀取、顯示、濾波、邊緣檢測(cè)和圖像分割等常見的圖像處理操作,并提供相應(yīng)的代碼示例。 安裝OpenCV: 首先,我們需要安裝OpenCV庫(kù)。

    2024年02月12日
    瀏覽(100)
  • Python使用Opencv圖像處理方法完成手勢(shì)識(shí)別(一)

    Python使用Opencv圖像處理方法完成手勢(shì)識(shí)別(一)

    由于是使用Opencv完成手勢(shì)識(shí)別,所以首先利用顏色特征是對(duì)手的顏色進(jìn)行提取,獲得HSV的最小值與最大值。 HSV顏色空間閾值主要是靠 Trackbar 調(diào)節(jié)閾值和 cv2.inRange 來(lái)生成掩膜來(lái)提取。 這是我寫的HSV閾值獲取的代碼: 使用方法: 運(yùn)行代碼之后,從第一個(gè)依次調(diào)節(jié)滑塊,使畫面中

    2024年02月05日
    瀏覽(87)
  • 計(jì)算機(jī)視覺傳統(tǒng)圖像處理庫(kù)opencv的使用

    人工智能領(lǐng)域的圖像處理分支,整理了計(jì)算機(jī)視覺傳統(tǒng)圖像處理庫(kù)opencv的使用網(wǎng)址鏈接。 opencv使用范圍,主要用在計(jì)算機(jī)視覺、視頻分析、機(jī)器學(xué)習(xí)、醫(yī)學(xué)影像處理、自動(dòng)駕駛、工業(yè)檢測(cè)、游戲開發(fā)上。 1):opencv效果視頻 opencv10個(gè)應(yīng)用場(chǎng)景 - 知乎 2):opencv介紹 AI必備技能

    2024年02月09日
    瀏覽(27)
  • iTOP-3568開發(fā)板使用OpenCV處理圖像-顏色轉(zhuǎn)換

    iTOP-3568開發(fā)板使用OpenCV處理圖像-顏色轉(zhuǎn)換

    本小節(jié)代碼在配套資料“iTOP-3568 開發(fā)板\\03_【iTOP-RK3568 開發(fā)板】指南教程 \\04_OpenCV 開發(fā)配套資料\\05”目錄下,如下圖所示: cv2.cvtColor()函數(shù)功能: 將一幅圖像從一個(gè)色彩空間轉(zhuǎn)換到另一個(gè)色彩空間。 函數(shù)原型: cv2.cvtColor(src,code,dst=None,dstCn=None) 參數(shù)定義: src:要轉(zhuǎn)換的源文件

    2024年02月12日
    瀏覽(27)
  • Python圖像處理:使用OpenCV對(duì)圖像進(jìn)行HSV和RGB表示法的轉(zhuǎn)換

    Python圖像處理:使用OpenCV對(duì)圖像進(jìn)行HSV和RGB表示法的轉(zhuǎn)換 在圖像處理中,我們經(jīng)常需要使用不同的顏色表示法來(lái)處理圖像。在OpenCV中,我們可以使用HSV(色相、飽和度、亮度)表示法來(lái)替代標(biāo)準(zhǔn)的RGB(紅、綠、藍(lán))表示法來(lái)處理圖像。HSV表示法更為直觀和易于使用,因?yàn)樗鼘?/p>

    2024年02月06日
    瀏覽(100)
  • C#使用OpenCv(OpenCVSharp)圖像處理實(shí)例:亮度、對(duì)比度、灰度

    本文實(shí)例演示C#語(yǔ)言中如何使用OpenCv(OpenCVSharp)對(duì)圖像進(jìn)行亮度、對(duì)比度、灰度處理。 目錄 亮度和對(duì)比度原理 灰度 實(shí)例 圖像亮度通俗理解便是圖像的明暗程度,數(shù)字圖像?f(x,y) = i(x,y) r(x, y)?,如果灰度值在[0,255]之間,則?f?值越接近0亮度越低,f?值越接近255亮度越

    2024年02月13日
    瀏覽(27)
  • C#使用OpenCv(OpenCVSharp)圖像局部二值化處理實(shí)例

    ? 本文實(shí)例演示C#語(yǔ)言中如何使用OpenCv(OpenCVSharp)對(duì)圖像進(jìn)行局部二值化處理。 目錄 圖像二值化原理 局部二值化 自適應(yīng)閾值 實(shí)例 效果

    2024年02月13日
    瀏覽(25)
  • C#使用OpenCv(OpenCVSharp)圖像全局二值化處理實(shí)例

    本文實(shí)例演示C#語(yǔ)言中如何使用OpenCv(OpenCVSharp)對(duì)圖像進(jìn)行全局二值化處理。 目錄 圖像二值化原理 函數(shù)原型 參數(shù)說(shuō)明 實(shí)例 效果

    2024年02月13日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包