如何使用C++访问OpenCV 2.3中的各个像素?
对于我的U8C3图像,我试过这个:
Scalar col = I.at<Scalar>(i, j);
Run Code Online (Sandbox Code Playgroud)
和
p = I.ptr<uchar>(i);
Run Code Online (Sandbox Code Playgroud)
首先是抛出异常,第二个是返回一些不相关的数据.我能够找到的所有示例都是针对C版OpenCV的旧IIPimage(?).
我只需要在给定坐标处获得像素的颜色.
我试图用OpenCV 2.1处理16位单通道未压缩TIFF图像,但是当我调用cvLoadImage时,显然它们被转换为8位:
IplImage* img = cvLoadImage("myImage.tif",
CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
std::cout << img->depth << std::endl;
Run Code Online (Sandbox Code Playgroud)
版画
8
Run Code Online (Sandbox Code Playgroud)
这些图像是由荧光扫描仪生成的,只能生成这种图像,我已经用商业软件包证实它们确实是16位的.
如何打开这些图像并使用原始位深度?