我正在编写一个小程序来将 OpenInventor 文件转换为 PCD 文件。为此,我输入了两个文件,即 OpenInventor 文件和 JPEG 图像。纹理坐标是介于 0.0 和 1.0 之间的浮点值。
我使用 OpenCV 提取 RGB 值并以十进制格式返回,但是下面的函数似乎无法正常工作...
float get_color(cv::Mat img, float x, float y) {
int i = x*img.cols;
int j = y*img.rows;
unsigned char R = img.ptr<unsigned char>(j)[3*i];
unsigned char G = img.ptr<unsigned char>(j)[3*i+1];
unsigned char B = img.ptr<unsigned char>(j)[3*i+2];
return R*pow(16,4) +
G*pow(16,2) +
B;
}
我加载图像
cv::imread("filename.jpg", CV_LOAD_IMAGE_COLOR).