在openCV中查看8位RAW图像文件
Viewing 8 bit RAW image file in openCV
我有一个包含5字节标题的原始文件,其中包含前两位的行和列的数量。第5个字节包含图像中每个像素的位数,在所有情况下都是8位。图像数据紧随其后。
因为我是新的openCV,我想问如何使用c++查看这个RAW图像文件作为灰度图像?
我知道如何在c++中读取二进制数据,并将图像存储为二维无符号字符数组(因为每个像素是8位)。
谁能告诉我如何使用openCV查看此数据作为图像?
我使用下面的代码,但得到一个完全奇怪的图像:
void openRaw() {
cv::Mat img(numRows, numCols,CV_8U,&(image[0][0]));
//img.t();
cv::imshow("img",img);
cv::waitKey();
}
任何帮助都将非常感激。
谢谢,罗希特
您必须将其转换为IplImage。
如果你想看到一个纯灰度图像,这实际上是相当容易的。
我在一个应用程序中使用的示例代码:CvSize mSize;
mSize.height = 960;
mSize.width = 1280;
IplImage* image1 = cvCreateImage(mSize, 8, 1);
memcpy( image1->imageData, rawDataPointer, sizeOfImage);
cvNamedWindow( "corners1", 1 );
cvShowImage( "corners1", image1 );
此时,您有一个有效的IplImage,然后可以显示它。(最后两行代码显示)
如果图像是拜耳平铺,你将不得不转换为RGB
c++注释:
cv::Mat img(rows,cols,CV_8U,ptrToDat);
cv::imwhow("img",img);
cv::waitkey();
*data应按列保存,否则使用:
cv::Mat img(cols,rows,CV_8U,ptrToDat);
img=img.t();
cv::imwhow("img",img);
cv::waitkey();
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 在RAW图像中提取RGB通道值的库或方法
- 使用 FreeImage 加载 RAW 灰度图像
- 读取 *.mhd/*.raw 在 ITK 中格式化 3D 图像
- 如何将RAW文件(3D图像)转换为STL格式
- 在c++中读取RAW图像或Do RAW图像具有标题
- 在openCV中查看8位RAW图像文件