在Opencv cvConvertScale面临的问题
Issues facing in Opencv cvConvertScale
这是一个非常简单的代码,但不知道哪里出了问题,我把图像从8转换到32
与此相同的线程
如何将8位OpenCV IplImage*转换为32位IplImage*?
char * InputImagePath = "E:\Inp\lg1.jpg";
IplImage* ImageIn = cvLoadImage(InputImagePath,1);
IplImage *img32 = cvCreateImage(cvGetSize(ImageIn), 32 , 3);
cvConvertScale(ImageIn,img32,1/255.);
cvSaveImage("E:\Inp\zzout.jpg",img32);
输出:zzout.jpg保存在我的本地硬盘,但它是空的(空白图像)
请帮我从这个…受够了这个简单的问题
如果你被困在旧的OpenCV上,这里有一个更完整的答案:
- 8位图像- 1色通道
- 24位图像- 3色通道(蓝,绿,红)
- 32位图像- 4色通道(BGR + Alpha -在png中很常见)
正如我所看到的,像素,你在jpeg上操作,这意味着,你需要处理8位(灰度)或24位(BGR)输入。
下面是你需要的代码:
if (inputImage->nChannels == 1)
{
cvCvtColor(inputImage, image24bit, CV_GRAY2BGR);
}
else
{
cvCopy(inputImage, image24bit, NULL);
}
如果你不使用老式的OpenCV结构,我建议在新版本中切换到更直观的处理图像的方式:[cv::Mat]和I/O: [cv:imread/cv:imwrite]读一读:http://opencv.willowgarage.com/documentation/cpp/basic_structures.htmlhttp://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html
cvSaveImage只能保存8位图像
您正在尝试将32位浮点图像保存为jpeg,但jpeg只支持8位(ok标准有12位,但没有人支持)。
相关文章:
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- OpenCV 傅里叶变换复杂输出问题
- 构建OpenCV的基本CMakefile问题
- openCV c++中手动侵蚀图像的问题(二进制图像)
- OpenCV C++ Mat 类行和列 - 它们是成员变量(和相关问题)吗?
- OpenCV - 基本操作 - 性能问题 [模式:发布]
- 在Visual "Microsoft studio 2019"上设置OpenCV 4.1.1时遇到问题?(非法指令。
- 从iPhone相机拍摄的视频似乎被OpenCV旋转了90度?我该如何解决这个问题?
- OpenCV:使用 cv::triangulatepoints() 的立体摄像机跟踪问题
- 使用 opencv 和 C++ - 未定义的引用的链接器出现问题
- yocto opencv w/ gstreamer安装问题
- 使用IP摄像机的OpenCV上的问题
- OPENCV MAT问题:直方图和此循环之间的差异
- OPENCV在C /名称空间问题上
- OPENCV筛选未定义的参考问题
- 当 pkg-config 不能解决 opencv 'undefined reference'编译问题时,如何解决它?
- Android OpenCV 应用程序的内存问题
- 将对象的属性传递到方法时出现作用域问题.(opencv相关)
- 随机树CvRTrees持久性问题opencv
- 从yaml文件问题opencv读取数据