簡體   English   中英

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_8UC1CV_16UC1

您能否進一步提供這些功能的結果?

  • StreamingChannel_getPixelType()
  • StreamingChannel_getBufferData()
  • StreamingChannel_getBufferSize()
  • StreamingChannel_getImagePitch()
  • StreamingChannel_getImageSizeX()
  • StreamingChannel_getImageSizeY()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM