OpenCV使用像素指针构建图像
OpenCV build an image with pixel Pointer
我正在尝试将OPENCV程序实现到现有程序中。在此程序中,相机捕获了图像,我可以通过指向图像的第一个像素的指针访问此图像。我的问题现在是,我如何从openCV可以使用的信息(指向第一个像素,宽度和图像的宽度)中构建图像。
我希望我的问题清楚地描述了。
你有任何想法吗?
cv::Mat aCameraImage = cv::Mat(cv::Size(getImageWidth(), getImageHeight()), CV_8UC1, getImageDataPtr());
if (!aCameraImage.empty())
{
cv::imshow("Camera Image", aCameraImage);
cv::waitKey(100);
}
for(int i = 0; i<aCameraImage.cols; i++ )
{
for(int j = 0; j<aCameraImage.rows; j++ )
{
std::cout << aCameraImage.at<uchar>(i,j) << " ";
}
std::cout << std::endl;
}
有一个SDK,我想您正在使用它。您会创建这样的结构吗?
IMAGE_INFO *ImageInfo = new IMAGE_INFO;
ImageInfo->ImageData = Image_getDataPointer(Image);
ImageInfo->SizeX = Image_getSizeX(Image);
ImageInfo->SizeY = Image_getSizeY(Image);
ImageInfo->PixelType = Image_getPixelType(Image);
ImageInfo->ImageID = Image_getImageID(Image);
SDK表示,相机可能会提供12位编码图像。请检查PixelType
并告诉我什么是。
enum GVSP_PIXEL_TYPE {
GVSP_PIX_UNKNOWN = 0x0000,
GVSP_PIX_MONO8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0001),
GVSP_PIX_MONO10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0003),
GVSP_PIX_MONO10_PACKED = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0004),
GVSP_PIX_MONO12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0005),
GVSP_PIX_MONO12_PACKED = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0006),
GVSP_PIX_MONO16 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0007),
GVSP_PIX_BAYGR8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0008),
GVSP_PIX_BAYRG8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0009),
GVSP_PIX_BAYGB8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x000A),
GVSP_PIX_BAYBG8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x000B),
GVSP_PIX_BAYGR10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000C),
GVSP_PIX_BAYRG10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000D),
GVSP_PIX_BAYGB10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000E),
GVSP_PIX_BAYBG10 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000F),
GVSP_PIX_BAYGR12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0010),
GVSP_PIX_BAYRG12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0011),
GVSP_PIX_BAYGB12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0012),
GVSP_PIX_BAYBG12 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0013),
GVSP_PIX_RGB24 = (GVSP_PIX_RGB | GVSP_PIX_OCCUPY24BIT),
GVSP_PIX_GRAY8 = (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT)
}
您可以使用一些提供的功能转换图像:
Image_getImage12bitAs8bit(Camera, Buffer8bit, BufferLength);
Image_getImage12bitAs16bit(Camera, Buffer16bit, BufferLength);
//Image_getImage16bitAs8bit(Camera, Buffer8bit, BufferLength);
之后,您可以使用CV_8UC1
或CV_16UC1
您可以进一步提供这些功能的结果吗?
- StreamingChannel_getPixelType()
- StreamingChannel_getBufferdata()
- StreamingChannel_getBuffersize()
- streamingchannel_getimagepitch()
- streamingchannel_getimagesizex()
- streamingchannel_getimagesizey()
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 平均图像时图像损坏
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 如何使用OpenCV从已知的3D点云(在没有I的情况下构建)估计新图像I的相机姿态矩阵
- 如何使用opencv从矩阵向量中构建图像
- OpenCV使用像素指针构建图像
- 应用傅里叶逆变换OpenCV后构建图像
- 将数据坐标构建为像素坐标的图像
- 在OpenCV中从Mat对象构建图像
- Xcode 4中的命令行工具构建版本,在构建可执行文件中包含图像存在问题
- 从灰度图像构建颜色条