从 cv::Mat 获取像素值作为数字?
Get the pixel values from cv::Mat as numbers?
您好,
我对 OpenCV 和 C++ 很陌生,所以我真的不知道这里发生了什么。我搜索了一种访问 Mat 图像(CV_8UC3 类型)像素值的方法,发现了这个:
Vec3b bgrPixel = foo.at<Vec3b>(Point(x, y));
//bgrPixel.val[0] is B, bgrPixel.val[1] is G, bgrPixel.val[2] is R
但这会输出字符而不是整数,例如,当我执行 cout << bgrPixel.val[0] << endl;
时,它会给出一些非常奇怪的字符:
r
Ç
è
Ç
~
ö
É
è
ÿ
×
×
;
2
#
2
/
+
'
"
)
%
-
*
如何获取整型像素值?或者是否有更简单的方法来访问它们,例如通过将 Mat 转换为常规数组(就像您在 Python 中所做的那样)?
提前感谢您的回答!
使用:cout << (int)(bgrPixel.val[0]) << endl;
bgrPixel.val[0]
是 unsigned char
类型,打印为字符。
从 unsigned char
转换为 int
解决了问题。
您好,
我对 OpenCV 和 C++ 很陌生,所以我真的不知道这里发生了什么。我搜索了一种访问 Mat 图像(CV_8UC3 类型)像素值的方法,发现了这个:
Vec3b bgrPixel = foo.at<Vec3b>(Point(x, y));
//bgrPixel.val[0] is B, bgrPixel.val[1] is G, bgrPixel.val[2] is R
但这会输出字符而不是整数,例如,当我执行 cout << bgrPixel.val[0] << endl;
时,它会给出一些非常奇怪的字符:
r
Ç
è
Ç
~
ö
É
è
ÿ
×
×
;
2
#
2
/
+
'
"
)
%
-
*
如何获取整型像素值?或者是否有更简单的方法来访问它们,例如通过将 Mat 转换为常规数组(就像您在 Python 中所做的那样)?
提前感谢您的回答!
使用:cout << (int)(bgrPixel.val[0]) << endl;
bgrPixel.val[0]
是 unsigned char
类型,打印为字符。
从 unsigned char
转换为 int
解决了问题。