这是深圳大学于老师的文档里的程序,就是为了巩固基础,加深对图像的理解。
include
include
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%255;//R
}
}
imshow("灰度图", grayImage);
imshow("彩色图", colorImage);
waitKey(0);
return 0;
}`
“`
对于计算机图像而言,都是数字,因为是8位的图像,最高像素255,这里的边长设为600*800,所以图中横向有三段多一点的小方格图,800除以255,刚好是3点多,也就印证了计算机数字图像显示图像的原理。用qq截图去看的话,也会得到RGB的值,在图像移中,也比较符合规律。