gpt4 book ai didi

c++ - 从未知类型的 cv::Mat 获取 cv::Scalar

转载 作者:太空宇宙 更新时间:2023-11-03 21:58:33 26 4
gpt4 key购买 nike

在读取未知深度和 channel 数的图像后,我想一个一个地访问它的像素。

在 opencv 1.x 上,代码如下:

IplImage * I = cvLoadImage( "myimage.tif" );
CvScalar pixel = cvGet2D( I, y, x );

但是在 opencv 2.x 上,cv::Mat.at() 方法要求我知道图像的类型:

cv::Mat I = cv::imread( "myimage.tif" );
if( I.depth() == CV_8U && I.channels() == 3 )
cv::Vec3b pixel = I.at<cv::Vec3b>( x, y );
else if( I.depth() == CV_32F && I.channels() == 1 )
float pixel = I.at<cv::float>( x, y );

是否有类似cvGet2D的函数可以接收cv::Mat并返回cv::Scalar而不知道编译时的图像类型时间?

最佳答案

对于真正的 C++ 初学者......

... 和/或只需要节省几秒钟的代码输入时间即可完成的黑客 the last project


cv::Mat mat = ...; // something
cv::Scalar value = cv::mean(mat(cv::Rect(x, y, 1, 1)));

(免责声明:此代码的浪费程度仅略低于为革命事业而死的年轻人。)

关于c++ - 从未知类型的 cv::Mat 获取 cv::Scalar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19501805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com