您正在访问矩阵的元素,您也正在访问图像本身.在您的代码中,执行此操作后:
cv::Mat img = cv::imread("lenna.png");
矩阵img代表图像lenna.png. (如果成功打开)
为什么不通过更改某些像素值来体验自己:
cv::Mat img = cv::imread("lenna.png");
//Before changing
cv::imshow("Before",img);
//change some pixel value
for(int j=0;j
{
for (int i=0;i
{
if( i== j)
img.at(j,i) = 255; //white
}
}
//After changing
cv::imshow("After",img);
注意:这只会更改易失性内存中的图像值,即当前加载mat img的位置.修改mat img的值,不会改变存储在磁盘中的实际图像“lenna.png”中的值(除非你是imwrite)
但是对于1通道灰度图像,它是CV_8UC1而不是CV_32FC1