社区
数据结构与算法
帖子详情
OpenCV中怎样填充指定的Rect
天问一号
2011-02-17 04:48:58
IplImage *pImage;//pImage为单通道,即灰度图像
char *p = pImage->imageData
CvRect x;
x.x = 20;
x.y = 30;
x.width = 100;
x.height = 120;
//?memset(?,?,0); 或其它方法
//怎样将pImage中的x区域填充为0值?
...全文
196
2
打赏
收藏
OpenCV中怎样填充指定的Rect
IplImage *pImage;//pImage为单通道,即灰度图像 char *p = pImage->imageData CvRect x; x.x = 20; x.y = 30; x.width = 100; x.height = 120; //?memset(?,?,0); 或其它方法 //怎样将pImage中的x区域填充为0值?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
npuhuxl
2011-02-20
打赏
举报
回复
cvFillPoly
martenyong
2011-02-19
打赏
举报
回复
0值是指黑的吗?
如果是指定颜色的填充我一般都用cvSet2D,按照坐标从(20,30)到(100,120)每个像素点设定一次颜色就行了。
Opencv
学习教程之漫水
填充
算法实例详解
前言 基本思想是自动选
中
了和种子点相连的区域,接着将该区域替换成
指定
的颜色,经常用来标记或者分离图像的一部分进行处理或分析。漫水
填充
也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或者只处理掩码
指定
的像素点。其
中
掩膜Mask用于进一步控制那些区域将被
填充
颜色(比如说当对同一图像进行多次
填充
时)。 int floodFill(inputoutputArray,inputoutputMask,seedPoint,Scalar newVal,
Rect
*
rect
=0,Scalar loDiff=Scalar(),Scalar upDiff=Scalar(),int flags=4) *
第五节 图像处理之ROI与泛洪
填充
import cv2 as cv import numpy as np def fill_color_demo(image): copyImage = image.copy() h,w = image.shape[:2] mask = np.zeros([h+2,w+2],np.uint8) cv.floodFill(copyImage,mask,(30,30),(0,255,255),(100,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE) cv.imshow("fill_color",copyImage) def fill_binary_demo(): image = np.zeros([400,400,3],np.uint8) image[100:300,100:300,:] =255 cv.imshow("fill_binary",image) mask = np.ones([402,402,1],np.uint8) mask[101:301,101:301] =0 cv.floodFill(image,mask,(200,200),(0,0,255),cv.FLOODFILL_MASK_ONLY) cv.imshow("filled_binary",image) src = cv.imread("E:/
opencv
/picture/me.jpg") cv.imshow("initial_window",src) face = src[50:350,100:300] gray = cv.cvtColor(face,cv.COLOR_BGR2GRAY) back_face = cv.cvtColor(gray,cv.COLOR_GRAY2BGR) src[50:350,100:300] = back_face cv.imshow("face_window",src) fill_color_demo(src) fill_binary_demo() cv.waitKey(0) cv.destroyAllWindows() 知识点: 1. 选取ROI感兴趣区域 src[ : , : ] = 像素矩阵 然后显示src图像就会出现ROI区域的像素值是像素矩阵的值。 容易混淆的。 h,w= src.shape[:2] ,获取图片的高度(x),获取图片的宽度(y) 2. 彩色图像的泛洪
填充
def fill_color_demo(image): copyImage = image.copy() #复制图像 h,w = image.shape[:2] #读取图像的高,宽 mask = np.zeros([h+2,w+2],np.uint8) #新建一个mask矩阵,+2是官方要求必须是8位字节的 cv.floodFill(copyImage,mask,(30,30),(0,255,255)(100,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE) cv.imshow("fill_color",copyImage) 关于floodFill(InputOutputArray image, Point seedPoint, Scalar newVal,
Rect
*
rect
=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4 ) 通俗解释:floodFill( 1.操作的图像, 2.掩模mask, 3.漫水
填充
算法的起始位置,4.
填充
的颜色, 5.
填充
颜色的低值, 6.
填充
颜色的高值 ,7.
填充
的方法) 关于参数5:读取起始位置的像素值,并由起始位置的像素值-参数五的值即可得到漫水目标区域的下限值 关于参数6:读取起始位置的像素值,并由起始位置的像素值+参数六的值即可得到漫水目标区域的上限值 FLOODFILL_FIXED_RANGE -(既可以用于彩色也可用于灰度图像) 如果设置为这个标识符的话,就会考虑当前像素与种子像素之间的差,否则就考虑当前像素与其相邻像素的差。也就是说,这个范围是浮动的。 FLOODFILL_MASK_ONLY - (只用于灰度图像)如果设置为这个标识符的话,函数不会去
填充
改变原始图像 (也就是忽略第三个参数newVal), 而是去
填充
掩模图像(mask) 注意:mask表示操作掩膜,单通道,8位,长宽都比输入图像大2个像素点的图像。漫水
填充
不会
填充
掩膜mask的非零像素区域。(这个大小只能是size.height+2,size.width+2)! 如果是对灰度图像进行漫水操作,
填充
的颜色值new_value就会被忽略掉(但是也需要设置编写否则语法过不了关),flag部分写cv.FLOODFILL_MASK_ONLY。 3. 灰度图像的泛洪
填充
4. image = np.zeros([400,400,3],np.uint8) image[100:300,100:300,:] =255 #建立一个图像矩阵,并将[100:300,100:300]像素值设置为255,即那一块是白色 cv.imshow("fill_binary",image) mask = np.ones([402,402,1],np.uint8) #建立mask矩阵,官方要求+2,必须是8位字节的 mask[101:301,101:301] =0#设置mask[101:301,101:301]位置的像素值为0 cv.floodFill(image,mask,(200,200),(0,0,255),cv.FLOODFILL_MASK_ONLY) #cv.FLOODFILL_MASK_ONLY:mask的
指定
的位置为零时才
填充
,不为零不
填充
。 #如果设置为cv.FLOODFILL_MASK_ONLY的话,函数不会去
填充
改变原始图像 (也就是忽略第三个漫水
填充
算法的起始位置), 而是去
填充
掩模图像mask cv.imshow("filled_binary",image) 知识盲区解答: 对ROI进行直接赋值像素值怎么做? 答:image[100:400,100:200] = np.zeros([300,100,3],np.uint8)
OpenCv
(C++) 使用矩形
Rect
覆盖图像
中
某个区域
OpenCv
(C++) 使用矩形
Rect
覆盖图像
中
某个区域
opencv
:图像
填充
在图像处理
中
,经常需要在图像的
指定
区域替换成另一幅图像,如何通过
opencv
实现这种效果呢?下面就让我们进行具体介绍。 实现这个功能简单分为两个步骤:1、首先在图像
中
设置ROI(region of interest,目标区域),2、在该区域
填充
目标图像。 有了思路,我们的主要工作就是考虑如何把它们转化成机器语言。 让我们看看下面的一段代码代码: #include <
opencv
2/
opencv
.hpp> #include<iostream> using name...
Opencv
中
rect
angle函数与
Rect
函数的用法
rect
angle函数是用来绘制一个矩形框的,通常用在图片的标记上。 1.
rect
angle(img2, Point(j,i), Point(j + img4.cols, i + img4.rows), Scalar(255, 255, 0), 2, 8); img2:被处理的图片 Point(j,i)代表矩形左上点的坐标 Point(j + cols, i + rows)代表矩形右下点的坐标【矩形的大小(cols,rows】 scalar:颜色 2代表线条宽度 8是线型,默认取8
Rect
().
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章