JavaCV實(shí)現(xiàn)照片馬賽克效果
前言
青空最近在逛一些社區(qū)的時(shí)候發(fā)現(xiàn)了有很多圖片是像素圖,感覺(jué)挺好玩的。正巧最近自己在學(xué)習(xí)JavaCV,所以在這里給大家演示一下如何使用JavaCV來(lái)處理像素圖。
像素圖其實(shí)有點(diǎn)類(lèi)似于類(lèi)似于打馬賽克的功能。通過(guò)像素的變化,演示一個(gè)像素畫(huà)的功能。像素畫(huà)在 NFT 中特別的流行。
準(zhǔn)備工作
我們先引入 JavaCV 的依賴(lài)庫(kù)
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.6</version>
</dependency>
這種方式引入,會(huì)把javacv 所有包含的都引入進(jìn)來(lái)。平時(shí)測(cè)試使用都時(shí)候,可以這樣操作。但是到真實(shí)項(xiàng)目中,還是需要做一次精簡(jiǎn)才行。
另外我們準(zhǔn)備了一個(gè)圖片。

代碼實(shí)現(xiàn)
讀取文件
val path ="path/to/img/"
val img = opencv_imgcodecs.imread(path + "meinv.jpeg")
獲取原圖的像素寬高,然后進(jìn)行像素比縮放。
val size = img.size()
val height = size.height()
val width = size.width()
val pixelSize = 10
val newWidth = width / pixelSize
val newHeight = height / pixelSize
根據(jù)設(shè)定的像素比, 對(duì)原圖進(jìn)行縮小,再放大的兩次 resize 操作。這樣就完成了像素圖的處理。
val imgTmp: Mat? = null
opencv_imgproc.resize(img, imgTmp, Size(newWidth, newHeight),0.0, 0.0, opencv_imgproc.INTER_NEAREST)
opencv_imgproc.resize(img, imgTmp, Size(width, height),0.0, 0.0, opencv_imgproc.INTER_NEAREST)
那我們來(lái)看下處理過(guò)之后的圖像效果吧

效果看起來(lái)還可以,圖片顏色單一圖片尺寸稍微小一些的效果會(huì)好很多。
完整代碼
import org.bytedeco.opencv.global.opencv_highgui
import org.bytedeco.opencv.global.opencv_imgcodecs
import org.bytedeco.opencv.global.opencv_imgproc
import org.bytedeco.opencv.opencv_core.Mat
import org.bytedeco.opencv.opencv_core.Size
fun main(args: Array<String>) {
? ? val path = "path/to/img/"
? ? val img = opencv_imgcodecs.imread(path + "meinv.jpeg")
? ? val size = img.size()
? ? val height = size.height()
? ? val width = size.width()
? ? val pixelSize = 10
? ? val newWidth = width / pixelSize
? ? val newHeight = height / pixelSize
? ? val imgTmp: Mat? = null
? ? opencv_imgproc.resize(img, imgTmp, Size(newWidth, newHeight), 0.0, 0.0, opencv_imgproc.INTER_NEAREST)
? ? opencv_imgproc.resize(img, imgTmp, Size(width, height), 0.0, 0.0, opencv_imgproc.INTER_NEAREST)
? ? opencv_highgui.imshow("meinv", img);
? ? opencv_highgui.waitKey(0)
}到此這篇關(guān)于JavaCV實(shí)現(xiàn)照片馬賽克效果的文章就介紹到這了,更多相關(guān)JavaCV內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA不識(shí)別Java文件:文件變橙色&顯示后綴名.java的解決
這篇文章主要介紹了IDEA不識(shí)別Java文件:文件變橙色&顯示后綴名.java的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
JAVA中通過(guò)Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證
這篇文章主要介紹了JAVA中通過(guò)Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
詳解springboot解決第三方依賴(lài)jar包的問(wèn)題
本篇文章主要介紹了詳解springboot解決第三方依賴(lài)jar包的問(wèn)題,解決了第三方依賴(lài)jar包的問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Eclipse安裝Aptana插件(注意對(duì)應(yīng)版本問(wèn)題)
這篇文章主要為大家詳細(xì)介紹了Eclipse安裝Aptana插件的相關(guān)資料,特別注意對(duì)應(yīng)版本問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
JavaWeb項(xiàng)目Servlet無(wú)法訪(fǎng)問(wèn)問(wèn)題解決
這篇文章主要介紹了JavaWeb項(xiàng)目Servlet無(wú)法訪(fǎng)問(wèn)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
SpringBoot+Vue項(xiàng)目部署上線(xiàn)的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot+Vue項(xiàng)目部署上線(xiàn)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02

