- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试加载图像,因为我必须对其应用算法。如果我加载一个每 channel 8 位的图像,则没有问题,但如果我加载一个 16bpc 的图像,它就会“毁掉”。不幸的是,由于我没有足够的声誉,我无法上传图片。
这些是它们的链接:
要么是源码,要么是8bpc的处理结果
http://postimg.org/image/gc0zf2lp5/
..如果我处理保存为 16bpc 的相同图像的结果
http://postimg.org/image/5nnwee7df/
这是代码:
FreeImage_Initialise();
FREE_IMAGE_FORMAT formato = FreeImage_GetFileType(argv[1], 0);
FIBITMAP* imagetmp = FreeImage_Load(format, argv[1]);
FIBITMAP* image = FreeImage_Rotate(imagetmp, 180);
FreeImage_FlipHorizontal(image);
int depth = FreeImage_GetBPP(image);
printf("depth = %d\n", FreeImage_GetPitch(image));
cv::Mat img(FreeImage_GetHeight(image), FreeImage_GetWidth(image), CV_MAKETYPE(depth/3, 3), FreeImage_GetBits(image), FreeImage_GetPitch(image));
FreeImage_DeInitialise();
它会是什么?
最佳答案
depth
的值不是您所期望的。它指的是 OpenCV 深度定义为:
#define CV_8U 0
#define CV_8S 1
#define CV_16U 2
#define CV_16S 3
#define CV_32S 4
#define CV_32F 5
#define CV_64F 6
因此,如果您知道您的 FreeImage 是 FIT_RGB16
类型,您应该使用值 CV_16U
作为深度。您还应该从 RGB 转换为 BGR,因为 OpenCV Mat
是 BGR 格式。
这里的例子:
#include <FreeImage.h>
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
FreeImage_Initialise();
FREE_IMAGE_FORMAT format = FreeImage_GetFileType("path_to_image", 0);
FIBITMAP* imagetmp = FreeImage_Load(format, "path_to_image");
FIBITMAP* image = FreeImage_Rotate(imagetmp, 180);
FreeImage_FlipHorizontal(image);
int depth = FreeImage_GetBPP(image);
printf("depth = %d\n", FreeImage_GetPitch(image));
// FreeImage to Mat conversion
cv::Mat img(FreeImage_GetHeight(image), FreeImage_GetWidth(image), CV_MAKETYPE(CV_16U, 3), FreeImage_GetBits(image), FreeImage_GetPitch(image));
cvtColor(img, img, CV_BGR2RGB);
FreeImage_DeInitialise();
return 0;
}
请注意,您也可以避免创建额外的 FreeImage 图像只是为了翻转它,并让 OpenCV Mat
来执行此操作:
#include <FreeImage.h>
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
FreeImage_Initialise();
FREE_IMAGE_FORMAT format = FreeImage_GetFileType("path_to_image", 0);
FIBITMAP* image = FreeImage_Load(format, "path_to_image");
// FreeImage to Mat conversion
cv::Mat img(FreeImage_GetHeight(image), FreeImage_GetWidth(image), CV_MAKETYPE(CV_16U, 3), FreeImage_GetBits(image), FreeImage_GetPitch(image));
cvtColor(img, img, CV_BGR2RGB);
flip(img,img,0);
FreeImage_DeInitialise();
return 0;
}
你不能用cv::imshow
直接显示这个图像。您需要将其转换为 CV_8UC3
类型才能看到。例如,您可以在 imshow
之前调用 convertScaleAbs(img, img);
。
或者可以引用this回答将所有类型的 FreeImage 转换为 OpenCV Mat
s 的函数。
关于c++ - FreeImage+OpenCV - 16 位图像失真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31866822/
我正在尝试更改通过AVAudioPlayer播放的声音文件的速率。它可以工作,但是有很多伪像,尤其是当我放慢速度时。我很高兴速率变化保持相同的音调,但是似乎有麻烦,尤其是持续的音符。 直到我用均衡,压
我正在开发一个需要同步声音的安卓音频应用。 我正在尝试合并两个声音缓冲器,但在大幅度时出现失真。这就是我正在做的: for(int i=0;i>8); } 缓冲区使用:
我正在尝试使用 MediaRecorder 从相机录制视频。这是一个代码 fragment 剪断.. mr.setAudioSource( MediaRecorder.AudioSource.MI
我想找点乐子看看 Canvas 。画一个盒子似乎很容易,所以我几乎从 mozilla 开发者网站上复制了一个例子。你可以在这里看到它:http://jsfiddle.net/Wolfy87/DZBwp
我有一个程序,可以简单地绘制一个立方体。当应用旋转缩放等变换时,程序可以工作。当我尝试应用任何透视矩阵(例如透视、平截头体或正交)时,立方体会以未定义的方式变得非常扭曲。我感到困惑的是为什么该程序在使
在 CSS 和 HTML 中,向下滚动时如何避免背景图像失真? 我的代码大纲如下:HTML * { margin : 0; background-image : url("im
我在 Qt 中旋转图像时遇到了一些问题。每次我用 QPainter 旋转我的图像它变得越来越扭曲。这是初始图像: 经过一些迭代后它变成: 这是我的代码: void Ship::Move(int x,
我正在尝试将 UILabel 旋转 45 度。我将 transform 属性设置为 CGAffineTransformMakeRotation(M_PI * 0.25) 但是当我这样做时,UILabe
当我添加一堆 (20-40) 个样本同时播放和重叠时,有时它会开始失真,然后开始出现一些波动、振荡和咔哒声。当样本正在播放时应用程序崩溃时会发出类似的声音 - 听起来像是突然、嘎吱作响的停止。 请注意
我想使用 amCharts Javascript 库显示我的用户排名。用户排名是这样的(很好,没问题): 问题是如果我有两个相同的配置文件名称(例如,如果我有两个 Sara 名称作为配置文件名称或什至
在 TornadoFX 中使用 SVG 时遇到奇怪的问题。我有一些 SVG 字符串存储在一个枚举中,我在程序中用作背景图像。当我在在线查看器中查看完全相同的 SVG 路径时,没有失真并且显示正确: 但
我使用录音机(Google Play 上的 AudioRec)。 我可以选择adjust the gain with [-20dB, + 20dB]范围。 它在我的手机上运行得很好,但用户使用连接到其
Logo 、搜索栏、购物车、登录和注册未在同一行对齐。 当我尝试查看移动 View 时,出现失真 搜索栏和其他东西搞砸了 在移动 View 中,点击菜单折叠按钮没有任何反应。 这是我的代码:
我仍然是 OpenGL 的初学者。我正在尝试使用着色器在 1280 x 720 的屏幕上绘制一个完美的正方形。 我使用的是 OpenGL 核心配置文件 3.3 版。当我试图在 1280 x 720 中
我的应用程序生成的电子邮件在浏览器(示例 chrome)中打开时可以完美打开。但是当在 Microsoft Outlook 中打开同一封电子邮件时,它会严重变形(例如文本不可见,按钮文本被换行)。任何
我对使用 OpenGL ES 2.0 还很陌生。我也在使用 iPhone 和 GLM 数学库。正如我所提到的,我经常使用本教程:http://tomdalling.com/blog/modern-op
我最初是在考虑 CoreImage 的情况下解决这个问题的(因为我还需要进行面部识别),但我意识到,不幸的是,CI 失真滤镜尚未包含在 iPhone 中。 我试图深入研究 GLImageProcess
我已经使用 twitter-bootstrap gem 来制作商店应用程序。在我添加 activeadmin gem 之前它工作正常。 admin主页的 View 有一行: 店铺名称 和 "trans
我拍了一张照片,然后用这张照片初始化了一个 UIImageView 对象。唯一的问题是,当我拍照时,照片是使用完整的 iPhone 屏幕(纵向)拍摄的。 使用这张照片初始化的 UIImageView
我正在使用 AVAssetWriter 将一系列图像编码为电影文件,遵循 Zoul 在这里的回答:How do I export UIImage array as a movie? . 简而言之我的流
我是一名优秀的程序员,十分优秀!