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

代碼實(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è)定的像素比, 對原圖進(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)
那我們來看下處理過之后的圖像效果吧

效果看起來還可以,圖片顏色單一圖片尺寸稍微小一些的效果會好很多。
完整代碼
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA不識別Java文件:文件變橙色&顯示后綴名.java的解決
這篇文章主要介紹了IDEA不識別Java文件:文件變橙色&顯示后綴名.java的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
JAVA中通過Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證
這篇文章主要介紹了JAVA中通過Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Eclipse安裝Aptana插件(注意對應(yīng)版本問題)
這篇文章主要為大家詳細(xì)介紹了Eclipse安裝Aptana插件的相關(guān)資料,特別注意對應(yīng)版本問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
JavaWeb項(xiàng)目Servlet無法訪問問題解決
這篇文章主要介紹了JavaWeb項(xiàng)目Servlet無法訪問問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
SpringBoot+Vue項(xiàng)目部署上線的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot+Vue項(xiàng)目部署上線的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02

