C++ Opencv写入和读取像素

写入像素

if(img.channels() == 3)    //  3通道图像
{
    img.at<cv::Vec3b>(0, 0)[0] = 255;
    img.at<cv::Vec3b>(0, 0)[1] = 255;
    img.at<cv::Vec3b>(0, 0)[2] = 255;    
}
else
    img.at<uchar>(0, 0) = 255;

读取像素

复制代码
if(img.channels() == 3)
{
    cout<< static_case<int>(img.at<cv::Vec3b>(0, 0)[0])<<endl;
cout<< static_case<int>(img.at<cv::Vec3b>(0, 0)[1])<<endl;
cout<< static_case<int>(img.at<cv::Vec3b>(0, 0)[2])<<endl;
} 
else
{
cout<< static_case<int>(img.at<uchar>(0, 0))<<endl;
}
复制代码

还有另一种方法读写像素

cv::Mat img(fileName);
cv::Mat_<uchar> imgTemp(img);    //  假如图片是单通道,告诉模板 T 为 uchar
cout<<static_cast<int>(imgTemp(0, 0))<<endl;

imgTemp(0, 0) = 255;    //  写入像素

 

posted @   补码  阅读(315)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2020-02-28 Qt代码区字符编码转换
点击右上角即可分享
微信分享提示