从用户数据中创建OpenCV Mat会产生带有圆形移位列的图像
Creating OpenCV Mat from user data results in image with circular shifted columns
我有一个从文件加载的图像。是。png文件吗?我将其转换为1D数组,以便通过指向该数组的指针在函数中使用。当我从1D指针创建Mat时,生成的图像看起来像是最右边的十几列,并将它们放在图像的左侧,几乎像列的圆形移位。
// SAMPLE CODE
Mat img = imread(argv[1], CV_LOAD_IMAGE_ANYDEPTH); // 16U1 png
int ncols = img.cols;
int nrows = img.rows;
//--Create input array and pointer--
uint16_t rawImage[nrows*ncols];
uint16_t *rawImage_ptr = rawImage;
//Assign value to array
for (int i=0;i<(ncols*nrows);i++){
*(rawImage_ptr+i) = img.at<uint16_t>(i);
}
// Create Mat from pointer
Mat image(nrows, ncols, CV_16UC1, &rawImage_ptr);
结果'image'有一些右列绕到左边。知道这是怎么回事吗?
图像存储在opencv中,每个新行从32位边界开始。
如果颜色数*像素大小不是4的倍数,则图像的每一行都将被填充。
您应该使用cv::mat ptr(row)
来获得指向每行开始的指针,然后沿着一行循环。
相关文章:
- OpenCV(C++)处理来自JavaScript / Web Assembly的图像数据
- VTK 图像数据,访问数组中的 1 个图像
- 处理来自IMFSourceReader和IMFSample的图像数据
- 如何返回定义良好的内存部分?例如来自图像数据的像素的颜色值
- 如何从amd gpus的显示输出中获取图像数据
- 如何将OpenCV图像数据从Python转换为C++?
- 以高数据速率发送图像数据超过提升::asio::udp?
- 如何将图像数据从搜索窗口中移动到本地存储器OpenCL
- 如何从内存中读取原始图像 (YUV 4:2:2) 格式的图像数据
- 如何使用JNI + OpenCV + NDK获取原始的android相机传感器图像数据
- 将图像数据尽快写入磁盘
- 输入层类型:图像数据在窗口咖啡cpp中给出空白输出
- Debbuger 用于可视化图像数据
- 显示图像数据
- C - 将UINT8_T*将图像数据转换为双**图像数据
- 如何以最佳方式将高分辨率图像数据存储在无符号字符*中C++
- 如何访问 win32 缩略图的图像数据
- 强制 WIC 将图像数据视为 RGB
- 为 ppm/pgm 图像数据创建存储
- 从数据库中以 blob 数据类型形式存储的原始图像数据中检索 CImage 对象