或者:
int width = im.cols; int height = im.rows; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { im.at<uchar>(i, j) = 255; } } //----------------------------------【colorReduce( )函数】------------------------------- // 描述:使用【动态地址运算配合at】方法版本的颜色空间缩减函数 //---------------------------------------------------------------------------------------------- void colorReduce(Mat& inputImage, Mat& outputImage, int div) { //参数准备 outputImage = inputImage.clone(); //拷贝实参到临时变量 int rowNumber = outputImage.rows; //行数 int colNumber = outputImage.cols; //列数 //存取彩色图像像素 for(int i = 0;i < rowNumber;i++) { for(int j = 0;j < colNumber;j++) { // ------------------------【开始处理每个像素】-------------------- outputImage.at<Vec3b>(i,j)[0] = outputImage.at<Vec3b>(i,j)[0]/div*div + div/2; //蓝色通道 outputImage.at<Vec3b>(i,j)[1] = outputImage.at<Vec3b>(i,j)[1]/div*div + div/2; //绿色通道 outputImage.at<Vec3b>(i,j)[2] = outputImage.at<Vec3b>(i,j)[2]/div*div + div/2; //红是通道 // -------------------------【处理结束】---------------------------- } // 行处理结束 } }Mat矩阵中数据指针Mat.data是uchar类型指针,CV_8U系列可以通过计算指针位置快速地定位矩阵中的任意元素。
Mat M(7,7,CV_32F,Scalar(1,3));
解释如下:创建一个M矩阵,7行7列,类型为CV_32F,C2表示有2个通道。Scalar(1,3)是对矩阵进行初始化赋值。第一个通道全为1,第2个通道全为3。
Mat_对应的是CV_8U,
Mat_对应的是CV_8S,
Mat_对应的是CV_32S,
Mat_对应的是CV_32F,
Mat_对应的是CV_64F
