效果比較好的細化演算法

2021-09-26 13:25:30 字數 1902 閱讀 2842

void cvthin(cv::mat& src, cv::mat& dst, int intera)

//非原地操作時候,copy src到dst

if(dst.data!=src.data)

int i, j, n;

int width, height;

width = src.cols -1;

//之所以減1,是方便處理8鄰域,防止越界

height = src.rows -1;

int step = src.step;

int p2,p3,p4,p5,p6,p7,p8,p9;

uchar* img;

bool ifend;

int a1;

cv::mat tmpimg;

//n表示迭代次數

for(n = 0; n0)

if(p[-step+1]==0&&p[1]>0) //p3,p4 01模式

if(p[1]==0&&p[step+1]>0) //p4,p5 01模式

if(p[step+1]==0&&p[step]>0) //p5,p6 01模式

if(p[step]==0&&p[step-1]>0) //p6,p7 01模式

if(p[step-1]==0&&p[-1]>0) //p7,p8 01模式

if(p[-1]==0&&p[-step-1]>0) //p8,p9 01模式

if(p[-step-1]==0&&p[-step]>0) //p9,p2 01模式

p2 = p[-step]>0?1:0;

p3 = p[-step+1]>0?1:0;

p4 = p[1]>0?1:0;

p5 = p[step+1]>0?1:0;

p6 = p[step]>0?1:0;

p7 = p[step-1]>0?1:0;

p8 = p[-1]>0?1:0;

p9 = p[-step-1]>0?1:0;

if((p2+p3+p4+p5+p6+p7+p8+p9)>1 && (p2+p3+p4+p5+p6+p7+p8+p9)<7 && a1==1)}}

}}

dst.copyto(tmpimg);

img = tmpimg.data;

for(i = 1; i < height; i++)

if(p[-step+1]==0&&p[1]>0) //p3,p4 01模式

if(p[1]==0&&p[step+1]>0) //p4,p5 01模式

if(p[step+1]==0&&p[step]>0) //p5,p6 01模式

if(p[step]==0&&p[step-1]>0) //p6,p7 01模式

if(p[step-1]==0&&p[-1]>0) //p7,p8 01模式

if(p[-1]==0&&p[-step-1]>0) //p8,p9 01模式

if(p[-step-1]==0&&p[-step]>0) //p9,p2 01模式

p2 = p[-step]>0?1:0;

p3 = p[-step+1]>0?1:0;

p4 = p[1]>0?1:0;

p5 = p[step+1]>0?1:0;

p6 = p[step]>0?1:0;

p7 = p[step-1]>0?1:0;

p8 = p[-1]>0?1:0;

p9 = p[-step-1]>0?1:0;

if((p2+p3+p4+p5+p6+p7+p8+p9)>1 && (p2+p3+p4+p5+p6+p7+p8+p9)<7 && a1==1)}}

}}

//如果兩個子迭代已經沒有可以細化的畫素了,則退出迭代

if(!ifend) break;

}}

效果比較好的頭髮shader

效果如下 渲染頭髮時可能會遇到如下問題 1.因為頭髮本質上是乙個乙個的透明的麵片,理所當然會想到使用 blend 混合方式來渲染。但當由於用 blend 時,要關閉z快取寫,即執行 zwirte off,不然透明的區域也會遮擋後面的畫素。此時就會出現問題,頭髮之間的層級會完全混亂,因為頭髮是多個麵片...

還是 push 比較好

以前在 js 中往乙個陣列裡 放數 用的是 a i i 的形式,就像這樣 var testarray new array for var i 1 i m i 這樣寫可能會引起問題,看似 testarray 0 沒有被賦值,但是此時賦值完畢以後你會發現 testarray.length 的值為 m 1...

AsyncTask 比較好的解釋

package com.example.asynctask import android.os.asynctask import android.widget.progressbar import android.widget.textview 生成該類的物件,並呼叫execute方法之後 首先執行...