关于图像像素opencv行与列关系
2023-12-18 16:20:34
- 使用C++ opencv读取一张图片
如下操作:
cv::Mat m4 = cv::imread("/home/juchunyu/20231013/globalPlanner/PM.pgm",cv::IMREAD_GRAYSCALE);
std::cout << "图像宽为:" << m4.cols << "\t高度为:" << m4.rows << "\t通道数为:" << m4.channels() << std::endl;
其中m4是一个矩阵,读取的图片就存在这个地方。
(1)m4.cols表示m4矩阵的列数,对应图片像素的宽度。
(2)m4.rows表示m4矩阵的行数,对应图片像素的高度。
- 使用C++ open cv 对矩阵赋值
cv::Mat map_info_temp(global_cost_map_->getSizeInCellsY(), global_cost_map_->getSizeInCellsX(), CV_8UC1);//initlize
//for(int i = (global_cost_map_->getSizeInCellsX())*(global_cost_map_->getSizeInCellsY()) - 1; i > 0; i--)
for(int i = 0;i < (global_cost_map_->getSizeInCellsX())*(global_cost_map_->getSizeInCellsY());i++)
{
int x = i % global_cost_map_->getSizeInCellsX(); //还原为像素坐标
int y = i / global_cost_map_->getSizeInCellsX(); //还原为像素坐标
//unsigned char value = 255;
map_info_temp.at<unsigned char>(y, x) = 254 - costs_[i];
//cout<<endl;
}
其中map_info_temp.at(y, x)为对像素赋值语句,其中:
(1)y表示图像的高度,矩阵的行数。
(2)x表示图像的宽度,矩阵的列数。
unsigned char &cv::Mat::at<unsigned char>(int i0, int i1)
上述代码中的i0和i1代表图像宽度还是高度?
在上述代码中,i0和i1分别代表图像的行(高度)和列(宽度)。在cv::Mat的at函数中,
第一个参数i0表示行索引,第二个参数i1表示列索引。所以,i0表示图像的高度,i1表示图像的宽度。
Reference
opencv图像数组坐标系
文章来源:https://blog.csdn.net/qq_40464599/article/details/135061710
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!