社区
C++ Builder
帖子详情
一个关于图像分割的问题
JerryAndJoy
2003-09-13 12:05:17
我想做一个拼图游戏,1.要先把用户选的图片缩小,2.然后再分割成9块,用什么函数可以做到?
请大家赐教,小弟在这儿先谢了~.~
...全文
52
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
打赏
举报
回复
什么函数可以做到?自己写的函数能做到!
PyTorch版Mask R-CNN图像实例分割实战:训练自己的数据集
本课程将手把手地教大家使用Labelme图像标注工具制作自己的数据集,并使用PyTorch版本的Mask R-CNN(Facebook 官方Detectron2/maskrcnn-benchmark)训练自己的数据集,从而能开展自己的
图像分割
应用。 本课程的具体...
【
图像分割
】医学
图像分割
入门实践(附源码)
有一定深度学习
图像分割
基础,至少阅读过部分语义分割或者医学
图像分割
文献 前面的一篇医学
图像分割
多目标分割(多分类)实践文章记录了笔者在医学
图像分割
踩坑入门的实践,当时仅仅贴了一些代码不够详细。通过博客的评论互动和私信发现有很多同学同样在做这个方向,这也让我下决心要将文章写的更详细一点,希望对该方向入坑的同学提供一些帮助。 先上源码。 1 完整源码 【完整源码地址】: pytorch-medical-image-segmentation 重新整理了之前的代码,利用其中
一个
数据集(前面文章提到的基于磁共振成.
深度学习
图像分割
之UNET
目录一级目录二级目录三级目录
图像分割
概述一.什么是
图像分割
?二.
图像分割
的应用场景三.
图像分割
分类四.小结
图像分割
的结构
图像分割
的模型
图像分割
的评估 一级目录 二级目录 三级目录
图像分割
概述 一.什么是
图像分割
?
图像分割
(Semantic Segmentation)是计算机视觉中非常重要的任务,是图像理解的基石性技术。 它的目标是为图像中的每个像素点分类,即像素级别的分类任务。 如下图所示,将...
MATLAB(五) 图像处理--
图像分割
图像分割
一、基于边界的
图像分割
1. 点检测 2.线检测 3.边缘检测 二、基于区域的
图像分割
1.区域生长 2.区域分离和聚合 3.分水岭分割 三、阈值分割 1.使用Otsu方法进行全局阈值分割 2.使用Otsu方法进行全局直方图阈值分割 3.使用Otsu方法进行多级图像阈值分割 4.使用边缘改进全局阈值处理 5.基于局部统计的可变阈值处理 6.使用移动平均的图像阈值处理 四...
[Python图像处理] 十九.
图像分割
之基于K-Means聚类的区域分割
前面的文章讲解了图像锐化和边缘提取技术,该篇文章将开始围绕
图像分割
进行讲解。
图像分割
就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。 本篇文章主要讲解基于理论的
图像分割
方法,通过K-Means聚类算法实现
图像分割
或颜色分层处理。基础性文章,希望对你有所帮助。 1.K-Means原理 2.K-Means聚类分割灰度图像 3.K-Means聚类对比分割彩色图像
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章