改变像素

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

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;

}


结果图:

 

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

改变像素


改变像素


 

你可能感兴趣的:(改变)