社区
C++ Builder
帖子详情
一个关于图像分割的问题
JerryAndJoy
2003-09-13 12:05:17
我想做一个拼图游戏,1.要先把用户选的图片缩小,2.然后再分割成9块,用什么函数可以做到?
请大家赐教,小弟在这儿先谢了~.~
...全文
53
12
打赏
收藏
一个关于图像分割的问题
我想做一个拼图游戏,1.要先把用户选的图片缩小,2.然后再分割成9块,用什么函数可以做到? 请大家赐教,小弟在这儿先谢了~.~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cliff166
2003-10-05
打赏
举报
回复
这不是图像分割的范围,以后发表帖子请用词准确,谢谢!
yjy1001
2003-09-20
打赏
举报
回复
用一个隐藏的image做母板,计算好位置用copyrect来copy过你的panel里就可以了
JerryAndJoy
2003-09-18
打赏
举报
回复
好的,我试试你那种方法。
主要是,我以前对那个函数不熟悉,而且,当时时间很紧
现在我准备重写那部分的代码了,多多支持我哈!! ^_^
weibz0525
2003-09-18
打赏
举报
回复
你的意思应该是在每一个Image装载一个完整的图象,然后通过改变Image大小来显示图象的某一部分吧?
这种方法即使行的通,也是极大的浪费,你看我上边给你的程序了吗?
用copyrect方法把图象拷入你那9个image还差不多,
JerryAndJoy
2003-09-17
打赏
举报
回复
不好意思哈,现在才上来,我们这边的网络出问题了。
此间我想出了一个方法,有点笨,就是用一个 Bevel 作底(为了好看),然后在里面放入9个Panel,9个Panel放在一起的大小,就是图片载入时的大小然后在每个 Panel 里都放一个 Image ,再改变Image在Panel里的相对位置,看上去就像图像被分割了
但是现在遇到问题了,无论如何都不能让图片按照我的意思移动,每次Image11 的值都不变,是不是这种地址返回是行不通的哦,以下是源代码:
void __fastcall TForm1::Image2Click(TObject *Sender)
{
ChangeImage ( Image2 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image3Click(TObject *Sender)
{
ChangeImage ( Image3 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image5Click(TObject *Sender)
{
ChangeImage ( Image5 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image8Click(TObject *Sender)
{
ChangeImage ( Image8 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image6Click(TObject *Sender)
{
ChangeImage ( Image6 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image9Click(TObject *Sender)
{
ChangeImage ( Image9 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image10Click(TObject *Sender)
{
ChangeImage ( Image10 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image7Click(TObject *Sender)
{
ChangeImage ( Image7 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image4Click(TObject *Sender)
{
ChangeImage ( Image4 , Image11 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ChangeImage ( TImage *ImageM , TImage *ImageN)
{
if (!((ImageM->Left != ImageN->Left)&&(ImageM->Top != ImageN->Top)))
{
if ((abs(ImageM->Left - ImageN->Left)<=129)&&(abs(ImageM->Top -ImageN->Top)<=97))
{
SuperX = ImageN->Left ;
SuperY = ImageN->Top ;
ImageN->Left = ImageM->Left ;
ImageN->Top = ImageM->Top ;
ImageM->Left = SuperX ;
ImageM->Top = SuperY ;
ImageN->Visible = true ;
ImageM->Visible = false ;
ImageN = ImageM ;
Image11 = ImageM ;
if ((Image9->Left == -258)&&(Image9->Top == -194))
{
if (((Image2->Left == 0)&&(Image2->Top == 0))&&((Image3->Left == -129)&&(Image3->Top == 0))&&((Image4->Left == -258)&&(Image4->Top == 0))&&((Image5->Left == 0)&&(Image5->Top == -97))&&((Image6->Left == -194)&&(Image6->Top == -97))&&((Image7->Left == -258)&&(Image7->Top == -97))&&((Image8->Left == 0)&&(Image8->Top == -194))&&((Image9->Left == -129)&&(Image9->Top == -194))&&((Image10->Left == -258)&&(Image10->Top == -194)))
{
Label4->Caption="Successed!!!";
Image10->Visible = true ;
}
}
else
Label4->Caption = "Every Thing is OK~~~!!!!";
}
else
Label4->Caption = "Dead in Second Pass~~";
}
else
Label4->Caption = "Dead in First Pass~";
}
weibz0525
2003-09-15
打赏
举报
回复
写的很罗嗦,自己改改吧,
从文件中倒入图象,切割成九块后显示到Image控件上,
int suoxiao=100;
int SingleWidth,SingleHeight;
//图象缩小
Graphics::TBitmap* pBitmap = new Graphics::TBitmap;
Graphics::TBitmap* NewBitmap = new Graphics::TBitmap;
pBitmap->LoadFromFile("c:\\1.bmp");
pBitmap->Width=pBitmap->Width-suoxiao;
pBitmap->Height=pBitmap->Height-suoxiao;
TRect NewRect(0, 0, pBitmap->Width, pBitmap->Height);
pBitmap->Canvas->StretchDraw(NewRect, pBitmap);
//切割成9块
SingleWidth=pBitmap->Width/3;
SingleHeight=pBitmap->Height/3;
NewBitmap->Width=pBitmap->Width+10;
NewBitmap->Height=pBitmap->Height+10;
TRect SrcRect1(0,0,SingleWidth,SingleHeight);
TRect DestRect1(0,0,SingleWidth,SingleWidth);
NewBitmap->Canvas->CopyRect(DestRect1,pBitmap->Canvas,SrcRect1);
TRect SrcRect2(SingleWidth,0,2*SingleWidth,SingleHeight);
TRect DestRect2(SingleWidth+5,0,2*SingleWidth+5,SingleHeight);
NewBitmap->Canvas->CopyRect(DestRect2,pBitmap->Canvas,SrcRect2);
TRect SrcRect3(2*SingleWidth,0,pBitmap->Width,SingleHeight);
TRect DestRect3(2*SingleWidth+10,0,pBitmap->Width+10,SingleHeight);
NewBitmap->Canvas->CopyRect(DestRect3,pBitmap->Canvas,SrcRect3);
TRect SrcRect4(0,SingleHeight,SingleWidth,2*SingleHeight);
TRect DestRect4(0,SingleHeight+5,SingleWidth,2*SingleHeight+5);
NewBitmap->Canvas->CopyRect(DestRect4,pBitmap->Canvas,SrcRect4);
TRect SrcRect5(SingleWidth,SingleHeight,2*SingleWidth,2*SingleHeight);
TRect DestRect5(SingleWidth+5,SingleHeight+5,2*SingleWidth+5,2*SingleHeight+5);
NewBitmap->Canvas->CopyRect(DestRect5,pBitmap->Canvas,SrcRect5);
TRect SrcRect6(2*SingleWidth,SingleHeight,pBitmap->Width,2*SingleHeight);
TRect DestRect6(2*SingleWidth+10,SingleHeight+5,pBitmap->Width+10,2*SingleHeight+5);
NewBitmap->Canvas->CopyRect(DestRect6,pBitmap->Canvas,SrcRect6);
TRect SrcRect7(0,pBitmap->Height-SingleHeight,SingleWidth,pBitmap->Height);
TRect DestRect7(0,pBitmap->Height-SingleHeight+10,SingleWidth,pBitmap->Height+10);
NewBitmap->Canvas->CopyRect(DestRect7,pBitmap->Canvas,SrcRect7);
TRect SrcRect8(SingleWidth,pBitmap->Height-SingleHeight,2*SingleWidth,pBitmap->Height);
TRect DestRect8(SingleWidth+5,pBitmap->Height-SingleHeight+10,2*SingleWidth+5,pBitmap->Height+10);
NewBitmap->Canvas->CopyRect(DestRect8,pBitmap->Canvas,SrcRect8);
TRect SrcRect9(2*SingleWidth,pBitmap->Height-SingleHeight,pBitmap->Width,pBitmap->Height);
TRect DestRect9(pBitmap->Width-SingleWidth+10,pBitmap->Height-SingleHeight+10,pBitmap->Width+10,pBitmap->Height+10);
NewBitmap->Canvas->CopyRect(DestRect9,pBitmap->Canvas,SrcRect9);
Image1->Picture->Bitmap->Assign(NewBitmap);
delete pBitmap;
delete NewBitmap;
binbin
2003-09-14
打赏
举报
回复
对,BitBlt和StreachBlt可以一次复制一部分,不用一像素一像素做了.
kingcaiyao
2003-09-13
打赏
举报
回复
可参照API的两个函数:BitBlt,StreachBlt
JerryAndJoy
2003-09-13
打赏
举报
回复
哦,谢谢~
binbin
2003-09-13
打赏
举报
回复
应该没有现成的东东,最笨的方法就是自己计算,然后按像素一行行读出来写到新图片中.
JerryAndJoy
2003-09-13
打赏
举报
回复
这个我想过,但我不知道,中见会遇到什么函数可以帮我做这个事,我很菜,才学cb,望不略赐教,详细到函数,我摸索也可以有方向。
binbin
2003-09-13
打赏
举报
回复
什么函数可以做到?自己写的函数能做到!
【
图像分割
】医学
图像分割
入门实践(附源码)
有一定深度学习
图像分割
基础,至少阅读过部分语义分割或者医学
图像分割
文献 前面的一篇医学
图像分割
多目标分割(多分类)实践文章记录了...重新整理了之前的代码,利用其中
一个
数据集(前面文章提到的基于磁共振成.
MATLAB(五) 图像处理--
图像分割
一、基于边界的
图像分割
1. 点检测 2.线检测 3.边缘检测 二、基于区域的
图像分割
1.区域生长 2.区域分离和聚合 3.分水岭分割 三、阈值分割 1.使用Otsu方法进行全局阈值分割 2.使用Otsu方法进行全局直方图阈值...
深度学习
图像分割
之UNET
目录一级目录二级目录三级目录
图像分割
概述一.什么是
图像分割
?二.
图像分割
的应用场景三.
图像分割
分类四.小结
图像分割
的结构
图像分割
的模型
图像分割
的评估 一级目录 二级目录 三级目录
图像分割
概述 一.什么是图像...
图像分割
综述
图像分割
是计算机视觉研究中的
一个
经典难题,已经成为图像理解领域关注的
一个
热点,
图像分割
是图像分析的第一步,是计算机视觉的基础,是图像理解的重要组成部分,同时也是图像处理中最困难的
问题
之一。所谓
图像分割
...
数字图像处理:实验六
图像分割
图像分割
的基本策略主要是基于图像灰度值的两个特性,即灰度的不连续性和灰度的相似性,因此
图像分割
方法可分为基于边缘的分割方法和基于区域的分割方法。本次实验通过完成简单的
图像分割
进一步加深对
图像分割
的理解...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章