![](/img/trans.png)
[英]Printing the pixel coordinates of the mouse pointer on the image while hovering on it using 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
您能否進一步提供這些功能的結果?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.