最近小弟在做bcb進行影像裁剪保存到資料庫,關于裁剪的問題,問我演算法上實作,究竟該如何做,有做個的師傅嗎,真的很懵
uj5u.com熱心網友回復:
用OpenCV處理這個興趣區非常簡單影像處理我都是用VC+ OpenCV處理的。
BCB也可以用OpenCV,但是要轉換型別庫
這邊有一個例子:http://blog.csdn.net/zht9961020/article/details/7036809
CB的沒落導致一些庫只有VC版本的
uj5u.com熱心網友回復:
做一個mask圖,黑底白橢圓,和目標圖做一個AND操作,保存結果就可以了。uj5u.com熱心網友回復:
int i,j,width,height;TColor color;
TJPEGImage *j1 = new TJPEGImage();
j1->Assign(img1->Picture->Graphic);
Graphics::TBitmap *Bitmap = new Graphics::TBitmap();
TRect ARect;
int nWidth,nHeight;
float fy = float(j1->Width)/img2->Width;
float fx = (float)j1->Height/img2->Height;
if(fy<=fx)
{
Bitmap->Width = (int)(j1->Width/fx);
Bitmap->Height = img2->Height;
ARect = Rect(0, 0, Bitmap->Width, Bitmap->Height);
}
Bitmap->Canvas->StretchDraw(ARect, j1);
j1->Assign(Bitmap);
img2->Picture->Graphic = j1;
width=img2->Picture->Width;
height=img2->Picture->Height;
int a = width/2,b = height/2;
for(i=0;i<width;i++)
{
for(j=0;j<height;j++)
{
color=Bitmap->Canvas->Pixels[i][j];
if(powl((i-a),2)/powl(a,2) + powl((j-b),2)/powl(b,2) <= 1)
img3->Canvas->Pixels[i][j] = color;
else
img3->Canvas->Pixels[i][j] = 0XFFFFFF;
}
}
uj5u.com熱心網友回復:
首先要明白,所有圖片都是矩形。呵呵,沒有橢圓的。之所以橢圓,是顯示一個橢圓區域之外的是純色或透明。
具體的思路:
就是填充橢圓之外的區域。你可以做一個雙回圈,判斷點是否在你的橢圓區域外。如果是則填充即可。
呵呵,以前做過,思路發給你。自己實作吧,這樣記得牢,理解的透徹。
如果是bcb,樓上的代碼應該可以參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71219.html
標籤:基礎類
