改变像素

接上一篇,改变像素色点还需要的知识:

Get*D

返回特殊的数组元素

CvScalar cvGet1D( const CvArr* arr, int idx0 );
CvScalar cvGet2D( const CvArr* arr, int idx0, int idx1 );
CvScalar cvGet3D( const CvArr* arr, int idx0, int idx1, int idx2 );
CvScalar cvGetND( const CvArr* arr, int* idx );
arr
输入数组.
idx0
元素下标第一个以0为基准的成员
idx1
元素下标第二个以0为基准的成员
idx2
元素下标第三个以0为基准的成员
idx
元素下标数组

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



Set*D
修改指定的数组

void cvSet1D( CvArr* arr, int idx0, CvScalar value );
void cvSet2D( CvArr* arr, int idx0, int idx1, CvScalar value );
void cvSet3D( CvArr* arr, int idx0, int idx1, int idx2, CvScalar value );
void cvSetND( CvArr* arr, int* idx, CvScalar value );
arr
输入数组
idx0
元素下标的第一个成员,以0为基点
idx1
元素下标的第二个成员,以0为基点
idx2
元素下标的第三个成员,以0为基点
idx
元素下标数组
value
指派的值
函数 cvSet*D 指定新的值给指定的数组元素。对于稀疏矩阵如果指定节点不存在函数创建新的节点 


// 像素的读写.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "opencv2/opencv.hpp"

int _tmain(int argc, _TCHAR* argv[])
{
	IplImage* image= cvLoadImage("F:\\Opencv_picture\\05.jpg", 1);
	CvScalar pixel;

	cvNamedWindow("Picture");

	for(int i=0; i< image->height; i++)
	{
	      for(int j=0; j<image->width; j++)
		  {
		      //获取像素的BGR,并显示
			  pixel= cvGet2D(image, i, j);
			  //打印BGR
			  printf("B= %f, G= %f, R= %f\n", pixel.val[0], pixel.val[1], pixel.val[2]);
              //修改各点的值RGB(0, 0, 0)改为黑色的像素
			  pixel.val[0]= 255;
			  pixel.val[1]= 255;
			  pixel.val[2]= 255;
			   //用cvGet2D改变像素点
			  cvSet2D(image, i, j, pixel);    
              //改变像素点就显示改变的图像
			  cvShowImage("Picture", image);
			  //延时
	          cvWaitKey(1);      
		  }
	}
	cvReleaseImage(&image);
	cvDestroyWindow("Picture");

	return 0;
}

结果图:

图片的像素点被慢慢的改为黑色





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值