cvGet2D函数

原文地址:cvGet2D函数 作者:denu1024

返回特殊的数组元素

 CvScalar cvGet2D( const CvArr* arr, int idx0, int idx1 );

arr
输入数组.
idx0
元素下标第一个以0为基准的成员
idx1
元素下标第二个以0为基准的成员
idx2
元素下标第三个以0为基准的成员
idx
元素下标数组

函数cvGet*D 返回指定的数组元素。对于稀疏数组如果需要的节点不存在函数返回0 (不会创建新的节点)

---------------------------------------------------------------------------------------------------------------------------

例:

 

CvScalar s;
 
for(y = 0; y < img->height; y++) {
   
for(x = 0; x < img->width; x++) {
      s
= cvGet2D(img, y, x);
   
}
 
}
在这里,img必须为height = width的方图,否则会出现opencv error的提示框。原因不详

 

以下是一个简单的示例代码,它使用OpenCV和C语言进行绘制直线和改变直线颜色的操作。 //导入OpenCV库 #include <opencv/cv.h> #include <opencv/highgui.h> int main() { //加载图像 IplImage* img = cvLoadImage("test.jpg", CV_LOAD_IMAGE_COLOR); //定义直线的起点和终点 CvPoint pt1 = cvPoint(10, 10); CvPoint pt2 = cvPoint(50, 50); //定义直线的颜色 CvScalar color = CV_RGB(255, 0, 0); //绘制直线 cvLine(img, pt1, pt2, color, 1, CV_AA, 0); //定义需要改变颜色的区域 CvRect region = cvRect(10, 10, 40, 40); //定义新的颜色 CvScalar new_color = CV_RGB(0, 255, 0); //循环遍历指定区域,改变颜色 for (int i = region.y; i < region.y + region.height; i++) { for (int j = region.x; j < region.x + region.width; j++) { CvScalar pixel = cvGet2D(img, i, j); if (pixel.val[0] == color.val[0] && pixel.val[1] == color.val[1] && pixel.val[2] == color.val[2]) { cvSet2D(img, i, j, new_color); } } } //显示图像 cvNamedWindow("Image", CV_WINDOW_AUTOSIZE); cvShowImage("Image", img); //等待按键 cvWaitKey(0); //释放内存 cvDestroyAllWindows(); return 0; } 在这个示例中,我们首先使用cvLoadImage函数加载一个名为test.jpg的图像。然后,我们定义了直线的起点和终点及其颜色,并使用cvLine函数在图像中绘制直线。 接下来,我们定义了需要更改颜色的区域,并在双重循环中遍历该区域。对于每个像素,我们使用cvGet2D函数获取其值,并检查其是否与直线颜色匹配。如果是这样,则使用cvSet2D函数将其颜色更改为新颜色。 最后,我们使用cvNamedWindow和cvShowImage函数显示更改后的图像,并使用cvWaitKey函数等待按键。当用户按下任何键时,我们使用cvDestroyAllWindows函数释放内存。 请注意,此示例仅仅是一个基本的例子,你可以根据你的实际需求来修改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值