opencv获取二值化图像像素值,结果有问题

Naruto_Q 2018-08-31 05:36:14
我有一张二值化图像,想获得某个像素点的值,但发现结果明显是错误的,我的代码为:
Mat BW = imread(imgName);
int value = BW.at<uchar>(191, 51);
出来的值是248,但用matlab这个点是0
请问是哪里出了问题呀?
...全文
746 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Naruto_Q 2018-10-09
  • 打赏
  • 举报
回复
谢谢大家的答复,我的最终问题出在,程序里其他地方不小心用到了同一个矩阵,所以出现了如题的问题
tiger波波 2018-09-07
  • 打赏
  • 举报
回复

static void get_color(cv::Mat &image, cv::Point point, cv::Scalar &color)
{
int offset;
unsigned char *ptr = (uchar*)image.data;

assert(image.rows>point.x);
assert(image.cols>point.y);

offset = 3 * (point.x * image.cols + point.y);

color.val[0] = ptr[offset];
color.val[1] = ptr[offset + 1];
color.val[2] = ptr[offset + 2];
}

sevancheng 2018-09-05
  • 打赏
  • 举报
回复
imread(imgName); 第二个参数指定下试试
赵4老师 2018-09-03
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察
赵4老师 2018-09-03
  • 打赏
  • 举报
回复
提醒:OpenCV是开源的。
单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。
向立天 2018-09-01
  • 打赏
  • 举报
回复
是不是坐标系统不统一
你可以这个点的上下左右有没有0点
Naruto_Q 2018-09-01
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=opencv获取二值化图像像素值
赵4老师,我搜过了,我这种用法应该没问题的呀,奇怪了
Naruto_Q 2018-09-01
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
int value = BW.at<uchar>(191, 51);//Note - y:191,x:51 value in (0,255)
	for (int i = 0; i < matData.rows; i++)
{
const uchar* pixelPtr = matData.ptr<uchar>(i);
for (int j = 0; j < matData.cols*matData.channels(); j++)
{
int data = pixelPtr[j];
outFile << data << "\t";
}
outFile << std::endl;
}

这样写到txt里面,值是0或255,但是直接如题去读取却不是,
赵4老师 2018-09-01
  • 打赏
  • 举报
回复
在我电脑上:
用Ps生成200x150的填满20x20类似国际象棋棋盘图案的二值位图bw.bmp
#include <stdio.h>
#include <string.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv) {
char *imgName="bw.bmp";
Mat BW = imread(imgName);
int value1 = BW.at<uchar>(181, 41);
int value2 = BW.at<uchar>(191, 51);
printf("value1,value2:%d,%d\n",value1,value2);
getchar();
return 0;
}
//value1,value2:0,255
赵4老师 2018-09-01
  • 打赏
  • 举报
回复
int value = BW.at<uchar>(191, 51);//Note - y:191,x:51 value in (0,255)

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧