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

您的位置:首頁技術文章
文章詳情頁

Android基于OpenCV實現非真實渲染

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

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

引用自【百度百科】

API

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

邊緣保留濾波

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

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

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

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

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

關于sigma_s和sigma_r:

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

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

操作

/** * 非真實渲染 * * @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實現非真實渲染

Android基于OpenCV實現非真實渲染

Android基于OpenCV實現非真實渲染

Android基于OpenCV實現非真實渲染

Android基于OpenCV實現非真實渲染

以上就是Android基于OpenCV實現非真實渲染的詳細內容,更多關于Android OpenCV實現非真實渲染的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品三级久久| 精品视频在线你懂得| 精品久久久久中文字幕小说| 丝瓜av网站精品一区二区| 88xx成人免费观看视频库| 亚洲日本国产| 激情五月色综合国产精品| 水蜜桃精品av一区二区| 国产日韩欧美在线播放不卡| 免费看黄色91| 亚洲一区区二区| 欧美日韩国产一区二区三区不卡 | 国产一区精品福利| 国产欧美日韩在线一区二区 | 色天使综合视频| 久久婷婷国产| 日韩激情网站| 综合色就爱涩涩涩综合婷婷| 欧美网站在线| 91精品啪在线观看国产18| 午夜av成人| 日韩av福利| 日韩欧美二区| av免费不卡国产观看| 激情黄产视频在线免费观看| 高清一区二区| 精品三级在线| 高清一区二区三区av| 欧美xxxx中国| 综合日韩av| 国产精品久久| 久久99青青| 婷婷精品进入| 麻豆理论在线观看| 一区二区视频欧美| 自由日本语亚洲人高潮| 婷婷国产精品| 欧美日韩在线播放视频| 国内精品99| 午夜欧美在线| 久久av在线| 男人的天堂久久精品| 亚洲大全视频| 激情久久中文字幕| 国产一精品一av一免费爽爽| 福利一区视频| 免费观看久久av| 99视频一区| 日本高清久久| 欧美一级全黄| 国产精品成人一区二区网站软件| 日韩精品免费一区二区三区| 日韩高清在线观看一区二区| 日本aⅴ亚洲精品中文乱码| 精品在线网站观看| 久久99影视| 欧美一区自拍| 99国产精品视频免费观看一公开| 欧美好骚综合网| 玖玖精品视频| 午夜在线一区二区| 国产亚洲欧美日韩精品一区二区三区 | 性色av一区二区怡红| 国产综合激情| 蜜臀久久99精品久久久久久9| 亚洲专区欧美专区| 国产极品模特精品一二| 1024精品一区二区三区| 老牛影视一区二区三区| 国产精品自拍区| 不卡一二三区| 国产情侣一区在线| 91精品啪在线观看国产爱臀| 正在播放日韩精品| 欧美精品一二| 久久影院一区二区三区| 国产欧美激情| 99国内精品| 日韩高清在线不卡| 综合五月婷婷| 丝袜美腿成人在线| 日韩精品免费视频一区二区三区| 激情自拍一区| 欧美一区91| 日韩精品欧美精品| 香蕉视频亚洲一级| 成人免费电影网址| 日韩精品一卡二卡三卡四卡无卡| 婷婷亚洲综合| 麻豆久久久久久| 日韩中文字幕一区二区三区| 麻豆国产91在线播放| 久久精品 人人爱| 欧美片第1页| 欧美亚洲tv| 欧美经典一区| 97人人精品| 日韩av一级片| 视频一区二区三区在线| 久久99精品久久久久久园产越南| 日韩欧美看国产| 日韩国产欧美在线视频| 97人人精品| 国产精品玖玖玖在线资源| 视频在线观看一区| 香蕉久久一区| 欧美伊人久久| 国产精品v一区二区三区| 日韩中文字幕无砖| 欧美日韩国产免费观看视频| 伊人久久亚洲影院| 久久亚洲欧洲| 国产午夜精品一区在线观看| 久久蜜桃av| 精品国产一区二| 国产美女亚洲精品7777| 日韩综合一区二区| 少妇精品久久久| 人人精品久久| 欧美日韩亚洲一区| 国产日韩一区二区三区在线播放| 亚洲精品麻豆| 亚洲人成在线影院| 日韩精品午夜视频| 日韩欧美四区| 久久狠狠久久| 欧美国产先锋| 国产一区二区视频在线看| 精品久久福利| 国产福利91精品一区二区| 国际精品欧美精品| 国产99在线| 激情六月综合| 男人的天堂亚洲一区| 日韩1区2区3区| 国产亚洲高清在线观看| 欧美aⅴ一区二区三区视频| 国产成人精品一区二区三区在线| а√天堂8资源中文在线| 啪啪国产精品| 亚洲成人精选| 伊人国产精品| 国产乱码精品一区二区三区四区| 国产日本久久| 国产精品xxx| 91日韩在线| 午夜精品一区二区三区国产| 日韩精品一二区| 国产日韩1区| 久久精品国产成人一区二区三区| 精品国产免费人成网站| 欧美~级网站不卡| 视频一区二区不卡| 青草久久视频| 福利视频一区| 米奇777超碰欧美日韩亚洲| 亚洲自啪免费| 国产精品亚洲欧美日韩一区在线| av中文字幕在线观看第一页 | 欧美亚洲日本精品| 欧美日韩一区二区三区视频播放| 免费在线小视频| 福利精品一区| 日韩av网站在线免费观看| 麻豆亚洲精品| av中文资源在线资源免费观看| 久久久久网站| 日韩一区精品字幕| 国产日韩视频| 亚洲成人精品| **爰片久久毛片| 福利欧美精品在线| 久久xxxx精品视频| 日韩超碰人人爽人人做人人添| 国产999精品在线观看| 1024精品久久久久久久久| 欧美永久精品| 久久婷婷丁香| 欧美天堂一区| 99tv成人| 国产美女精品视频免费播放软件| 欧美 日韩 国产精品免费观看| 欧美一区91| 免费观看不卡av| 国产精品成人一区二区网站软件| 五月综合激情| 国产成人精品一区二区三区视频| 亚洲涩涩av| 免费观看亚洲天堂| 免费日韩av| 成人福利av| 国产亚洲观看| 国产精品女主播一区二区三区| 丁香婷婷久久| 日韩精选在线| 九一国产精品| av资源中文在线| 欧美日韩精品一区二区三区视频 | 天使萌一区二区三区免费观看| 欧美sm一区|