用opencv提取图像轮廓之后能不能再把轮廓内部图像或者像素截取出来?
答案:2 悬赏:30 手机版
解决时间 2021-02-24 12:04
- 提问者网友:辞取
- 2021-02-24 06:55
用opencv提取图像轮廓之后能不能再把轮廓内部图像或者像素截取出来?
最佳答案
- 五星知识达人网友:人類模型
- 2021-02-24 08:27
这功能可以实现
全部回答
- 1楼网友:杯酒困英雄
- 2021-02-24 09:18
opencv中用于读取图像像素点的值的方法很多,这里主要提供了两种常用的方法。
方法一
利用iplimage数据类型的imagedata定位数据缓冲区来实现,imagedata包含指向图像第一个像素数据的指针
例:
if( imgsource != 0 )//imgsource为iplimage*
{
for ( int i = 0; i < imgsource->height; ++i )
{
uchar * pucpixel = (uchar*)imgsource->imagedata + i*imgsource->widthstep;
for ( int j = 0; j < imgsource->width; ++j )
{
pucpixel[3*j] = 0;//像素第一个通道的值
pucpixel[3*j + 1] = 0;//像素第二个通道的值
pucpixel[3*j + 2] = 0;//像素第三个通道的值
}
}
}
方法二
利用opencv提供的getreal*d,setreal*d和get*d,set*d,这里*为2,对于单通道图像可以使用前两个函数,对于多通道图像可以使用后两个函数
例:
if( imgsource != 0 )//imgsource为iplimage*
{
for ( int i = 0; i < imgsource->height; ++i )
for ( int j = 0; j < imgsource->width; ++j )
{
//获取(i, j)处的三通道图像像素值
cvscalar scapixelval = cvget2d( imgsource, i, j );
//获取(i, j)处的单道图像像素值
double dpixelval = cvgetreal2d( imgsource, i, j );
//设定(i, j)处的三通道图像像素值
cvset2d( imgsource, i, j, scalpixelval );
//设定(i, j)处的单通道图像像素值
cvsetreal2d( imgsource, i, j, dpixelval );
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯