这是深圳大学于老师的文档里的程序,就是为了巩固基础,加深对图像的理解。
using namespace std; using namespace cv; int main() { namedWindow(“灰度图”, 1); namedWindow(“彩色图”, 1);
Mat grayImage (600, 800, CV_8UC1); Mat colorImage(600, 800, CV_8UC3); for (int i = 0; i < grayImage.rows; i++) { uchar *p = grayImage.ptr<uchar>(i); for (int j = 0; j < grayImage.cols; j++) p[j] = j % 255; // } for (int i = 0; i < colorImage.rows; i++) { Vec3b*p = colorImage.ptr<Vec3b>(i);//获取第i行首像素指针 for (int j = 0; j < colorImage.cols; j++) { p[j][0] = j % 255;//B p[j][1] = j % 255;//G p[j][2] = i%5;//R } } imshow("灰度图", grayImage); imshow("彩色图", colorImage); waitKey(0); return 0;}`
“` 对于计算机图像而言,都是数字,因为是8位的图像,最高像素255,这里的边长设为600*800,所以图中横向有三段多一点的小方格图,800除以255,刚好是3点多,也就印证了计算机数字图像显示图像的原理。用qq截图去看的话,也会得到RGB的值,在图像移中,也比较符合规律。