日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android基于OpenCV實現(xiàn)非真實渲染

瀏覽:201日期:2022-09-18 08:29:17
目錄非真實渲染API邊緣保留濾波細節(jié)增強素描鉛筆畫風格化操作效果非真實渲染

非真實感渲染(Non Photorealistic Rendering,簡稱NPR),是指利用計算機模擬各種視覺藝術(shù)的繪制風格,也用于發(fā)展新的繪制風格。比如模擬中國畫、水彩、素描、油畫、版畫等藝術(shù)風格。NPR也可以把三維場景渲染出豐富的、特別的新視覺效果,使它具備創(chuàng)新的功能。NPR渲染以強烈的藝術(shù)形式應(yīng)用在動畫、游戲等娛樂領(lǐng)域中,也出現(xiàn)在工程、工業(yè)設(shè)計圖紙中。廣闊的應(yīng)用領(lǐng)域,不僅是由于它的藝術(shù)表現(xiàn)形式豐富多樣,還在于計算機能夠輔助完成原本工作量大、難度高的創(chuàng)作工作。 目前,基于三維軟件的NPR渲染器相當多,如FinalToon, Il-lustrator, Pencil等,同時還可以借用程序貼圖來創(chuàng)建NPR的材質(zhì),協(xié)助生成手繪風格的圖像效果;另外,像Mental Ray,Reyes,Brazil等外掛渲染器都是NPR渲染的解決方案

引用自【百度百科】

API

OpenCV給我們提供了四種非真實渲染的使用場景:邊緣保留濾波、細節(jié)增強、素描鉛筆畫、風格化。

邊緣保留濾波

public static void edgePreservingFilter(Mat src, Mat dst, int flags, float sigma_s, float sigma_r) 參數(shù)一:src,輸入圖像,8位三通道。 參數(shù)二:dst,輸出圖像,8位三通道。 參數(shù)三:flags,邊緣保留標志位。

public static final intRECURS_FILTER = 1,NORMCONV_FILTER = 2; 參數(shù)四:sigma_s,鄰域大小。取值0~200。 參數(shù)五:sigma_r,鄰域內(nèi)被平均的顏色的不相近程度。取值0~1。細節(jié)增強

public static void detailEnhance(Mat src, Mat dst, float sigma_s, float sigma_r) 參數(shù)一:src,輸入圖像,8位三通道。 參數(shù)二:dst,輸出圖像,8位三通道。 參數(shù)三:sigma_s,鄰域大小。取值0~200。 參數(shù)四:sigma_r,鄰域內(nèi)被平均的顏色的不相近程度。取值0~1。素描鉛筆畫

public static void pencilSketch(Mat src, Mat dst1, Mat dst2, float sigma_s, float sigma_r, float shade_factor) 參數(shù)一:src,輸入圖像,8位三通道。 參數(shù)二:dst1,輸出圖像,8位單通道,即黑白素描。 參數(shù)三:dst2,輸出圖像,大小類型與輸入圖像相同,即彩色素描。 參數(shù)四:sigma_s,鄰域大小。取值0~200。 參數(shù)五:sigma_r,鄰域內(nèi)被平均的顏色的不相近程度。取值0~1。 參數(shù)六:shade_factor,強度縮放值。取值0~0.1風格化

public static void stylization(Mat src, Mat dst, float sigma_s, float sigma_r) 參數(shù)一:src,輸入圖像,8位三通道。 參數(shù)二:dst,輸出圖像,8位三通道。 參數(shù)三:sigma_s,鄰域大小。取值0~200。 參數(shù)四:sigma_r,鄰域內(nèi)被平均的顏色的不相近程度。取值0~1。

關(guān)于sigma_s和sigma_r:

sigma_s,即Sigma_Spatial,決定平滑量。sigma_r,即Sigma_Range,決定平均值。

典型的平滑濾波器將像素值替換為其相鄰像素的加權(quán)和。 鄰域越大,過濾后的圖像看起來越平滑。 鄰域的大小與參數(shù)sigma_s成正比。但是在邊緣保留濾波器里,有兩個關(guān)鍵點:1)平滑圖片;2)不平滑邊緣/顏色邊界。換句話說,我們就無法簡單地將像素值替換成鄰域像素的加權(quán)和。而是在鄰域內(nèi)選取和當前像素值相近的像素然后求取平均值,然后替換當前像素值的方式來避免上述問題。所以就需要兩個參數(shù)來明確范圍和顏色相似程度。

操作

/** * 非真實渲染 * * @author yidong * @date 11/30/20 */class NonPhotoRealisticRenderingActivity : AppCompatActivity() { private lateinit var mRgb: Mat private val mBinding: ActivityNonPhotorealisticRenderingBinding by lazy {ActivityNonPhotorealisticRenderingBinding.inflate(layoutInflater) } private var sigmaR = 10fset(value) { field = when {value > 200f -> { 200f}value < 0f -> { 200f}else -> { value} } mBinding.tvSigmaR.text = sigmaR.toInt().toString(10)} private var sigmaS = 0.1fset(value) { field = when {value > 1.0f -> { 1.0f}value < 0f -> { 0f}else -> { value} } mBinding.tvSigmaS.text = String.format('%.1f', sigmaS)} override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(mBinding.root)mRgb = Mat()val bgr = Utils.loadResource(this, R.drawable.cow)Imgproc.cvtColor(bgr, mRgb, Imgproc.COLOR_BGR2RGB)mBinding.ivLena.showMat(mRgb) } private fun doEdgePreservingFilter(flag: Int) {val dst = Mat()mBinding.isLoading = trueGlobalScope.launch(Dispatchers.IO) { Photo.edgePreservingFilter(mRgb, dst, flag, sigmaR, sigmaS) launch(Dispatchers.Main) {mBinding.isLoading = falsemBinding.ivResult.showMat(dst) }} } private fun doDetailEnhance() {val dst = Mat()mBinding.isLoading = trueGlobalScope.launch(Dispatchers.IO) { Photo.detailEnhance(mRgb, dst, sigmaR, sigmaS) launch(Dispatchers.Main) {mBinding.isLoading = falsemBinding.ivResult.showMat(dst) }} } private fun doPencilSketch() {val dst1 = Mat()val dst2 = Mat()mBinding.isLoading = trueGlobalScope.launch(Dispatchers.IO) { Photo.pencilSketch(mRgb, dst1, dst2, sigmaR, sigmaS, 0.03f) launch(Dispatchers.Main) {mBinding.isLoading = falsemBinding.ivResult.showMat(dst2) }} } private fun doStylization() {val dst = Mat()mBinding.isLoading = trueGlobalScope.launch(Dispatchers.IO) { Photo.stylization(mRgb, dst, sigmaR, sigmaS) launch(Dispatchers.Main) {mBinding.isLoading = falsemBinding.ivResult.showMat(dst) }} } override fun onCreateOptionsMenu(menu: Menu?): Boolean {menuInflater.inflate(R.menu.menu_non_photorealistic_rendering, menu)return true } override fun onOptionsItemSelected(item: MenuItem): Boolean {title = item.titlewhen (item.itemId) { R.id.photo_edge_preserving_normconv_filter -> {doEdgePreservingFilter(Photo.NORMCONV_FILTER) } R.id.photo_edge_preserving_recurs_filter -> {doEdgePreservingFilter(Photo.RECURS_FILTER) } R.id.photo_detail_enhance -> {doDetailEnhance() } R.id.photo_pencil_sketch -> {doPencilSketch() } R.id.photo_stylization -> {doStylization() }}return true } fun incSigmaR(view: View) {this.sigmaR = this.sigmaR.plus(1.0f)if (this.sigmaR > 200.0f) { this.sigmaR = 200f} } fun decSigmaR(view: View) {this.sigmaR = this.sigmaR.minus(1.0f)if (this.sigmaR < 0f) { this.sigmaR = 0f} } fun incSigmaS(view: View) {this.sigmaS = this.sigmaS.plus(.1f)if (this.sigmaS > 1.0f) { this.sigmaS = 1f} } fun decSigmaS(view: View) {this.sigmaS = this.sigmaS.minus(.1f)if (this.sigmaS < 0f) { this.sigmaS = 0f} }}效果

Android基于OpenCV實現(xiàn)非真實渲染

Android基于OpenCV實現(xiàn)非真實渲染

Android基于OpenCV實現(xiàn)非真實渲染

Android基于OpenCV實現(xiàn)非真實渲染

Android基于OpenCV實現(xiàn)非真實渲染

以上就是Android基于OpenCV實現(xiàn)非真實渲染的詳細內(nèi)容,更多關(guān)于Android OpenCV實現(xiàn)非真實渲染的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆精品99| 激情视频网站在线播放色| 亚洲不卡视频| 91精品国产福利在线观看麻豆| 国产亚洲高清一区| 亚洲尤物av| 欧美不卡在线| 日韩精品不卡一区二区| 麻豆91精品91久久久的内涵| 国产精品18| 亚洲综合色婷婷在线观看| 国产网站在线| 亚洲中字黄色| 欧美日韩亚洲一区三区| av不卡免费看| 久久精品青草| 免费看久久久| 国产精品极品国产中出| 欧美欧美黄在线二区| 亚洲精品乱码| 91精品国产自产观看在线| 日韩区一区二| 亚洲我射av| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美中文字幕| 日本成人手机在线| 视频在线观看一区二区三区| 亚洲一区欧美激情| 日韩一级网站| 亚洲精品高潮| 久久精品资源| 日本aⅴ亚洲精品中文乱码| 午夜日韩福利| 欧美91精品| 国产免费成人| 国产视频亚洲| 日韩国产在线不卡视频| 亚洲制服一区| 日韩高清在线观看一区二区| 国产精品www994| 日韩欧美一区免费| 蜜桃91丨九色丨蝌蚪91桃色| 日韩不卡在线| 日韩久久精品| 国产极品模特精品一二| 老司机免费视频一区二区三区| 国产精品九九| 国产精东传媒成人av电影| 久久亚洲欧美| 青青伊人久久| 电影91久久久| 中文一区二区| | 国产精品一国产精品k频道56| 先锋影音久久久| 视频一区视频二区在线观看| 午夜一区在线| 日韩av一级| 蜜臀久久99精品久久久画质超高清 | 久久av免费看| 婷婷视频一区二区三区| 亚洲一卡久久| 在线观看免费一区二区| 国产亚洲福利| 亚洲免费一区二区| 蜜桃久久av一区| 在线国产一区二区| 日韩免费视频| 99久久久久国产精品| 欧美在线影院| 亚洲va久久| 91成人精品观看| 国产精品第一国产精品| 欧美特黄视频| 国产精品日本欧美一区二区三区| 日韩国产在线观看| 久色成人在线| 好吊视频一区二区三区四区| 少妇高潮一区二区三区99| 亚洲一区二区三区中文字幕在线观看 | 亚洲最大av| 久久国产影院| 麻豆久久久久久| 欧美日韩国产高清| 久久蜜桃精品| 日韩伦理一区| 在线天堂中文资源最新版| 久久精品一本| 美女久久久精品| 国产伦精品一区二区三区视频 | 亚欧洲精品视频在线观看| 久久精品色播| 久久久国产精品一区二区中文| 香蕉成人av| 欧美日韩国产免费观看| 99国产精品久久久久久久成人热| 亚洲精品成人| 久久最新视频| 日韩精品免费一区二区夜夜嗨| 欧美日韩99| 久久精品九色| 水蜜桃精品av一区二区| 国产日韩在线观看视频| 日本蜜桃在线观看视频| 日韩精品视频一区二区三区| 快播电影网址老女人久久| 奇米亚洲欧美| 日韩视频久久| 免费福利视频一区二区三区| 国产三级一区| 亚洲制服一区| 久久成人亚洲| 亚洲成av人片一区二区密柚| 国产精品日韩精品在线播放| 亚洲一级网站| 精品国产精品久久一区免费式| 一区二区三区午夜视频| 神马久久午夜| 精品理论电影在线| 国产激情久久| 欧洲一级精品| 在线一区视频| 中文字幕免费精品| 婷婷成人av| 国产精品免费不| 国产成人精品一区二区三区在线| 韩日一区二区| 欧美二区视频| 麻豆9191精品国产| 国产欧美高清视频在线| 国产精品片aa在线观看| 人在线成免费视频| 在线观看精品| 在线免费观看亚洲| 国产欧美日韩精品一区二区免费| 欧美成人精品一级| 欧美sm一区| 日韩国产欧美在线播放| 欧美国产日韩电影| 青青久久av| 亚洲精品在线二区| 岛国av免费在线观看| 亚洲精品一区二区在线看| 日韩成人精品一区二区三区| 国产成人精品一区二区三区免费 | 欧美福利一区| 亚洲精品影视| 97精品一区| 国产一卡不卡| 日韩精品一级二级 | 中文久久精品| 免费一级欧美在线观看视频| 羞羞答答国产精品www一本 | 国产精品一区高清| 国产模特精品视频久久久久| 成人精品动漫一区二区三区| 一区二区高清| 亚洲一级影院| 成人小电影网站| 成人亚洲一区二区| 国产欧美日韩一区二区三区四区| 亚洲一区成人| 美女少妇全过程你懂的久久| 日本午夜大片a在线观看| 91亚洲精品在看在线观看高清| 欧美日韩少妇| а√天堂8资源中文在线| 久久国产精品免费精品3p| 日韩制服丝袜av| 亚洲ab电影| 日韩一区二区三区高清在线观看 | 激情综合自拍| www.com.cn成人| 日韩欧美少妇| 91精品蜜臀一区二区三区在线| 四虎影视精品| 久久久噜噜噜| 亚洲精品国产嫩草在线观看| 蜜桃精品在线| 亚洲小说欧美另类婷婷| 久久精品理论片| 国产videos久久| 韩日一区二区| 亚洲va中文在线播放免费| 午夜久久中文| 欧美成人高清| 日韩一区二区三区免费视频| 国产日韩免费| 日产午夜精品一线二线三线| 91精品国产调教在线观看| 欧美精品一卡| 人在线成免费视频| 午夜久久免费观看| 黄色av一区| 免费美女久久99| 久久三级视频| 日韩欧美精品综合| 久久这里只有| 久久三级视频| 亚洲精品影院在线观看|