zoukankan      html  css  js  c++  java
  • 改变像素

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

    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
    ", 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;
    }
    


    结果图:

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





  • 相关阅读:
    每天删除和创建表
    一种直接取数的建表语句
    正则替换函数regexp_replace()
    将同个id对应的多行数据,转为一行数组类型数据。使用collect_set() group by函数
    根据客户端标识加载不同的css文件
    配置npm镜像
    解决方案
    oracle virtualbox设置asm虚拟硬盘
    scala基础
    excel合并sheet内容
  • 原文地址:https://www.cnblogs.com/pangblog/p/3324834.html
Copyright © 2011-2022 走看看