Magick++ ImageMagick 7.0.5-4 Q16 的统计数据x86_64问题
Statistics with Magick++ ImageMagick 7.0.5-4 Q16 x86_64 issue
我正在尝试使用 Magick++ API 版本 7 获取图像中的最小值:
img.type(Magick::GrayscaleType);
auto stats = img.statistics();
std::cout << argv[0] << ":" << stats.channel(Magick::PixelChannel::GrayPixelChannel ).minima() << std::endl;
img.write("test" + Glib::ustring(argv[0]) + ".bmp");
对于几张图像,我得到相同的minima
值和错误的值> 1.0。
在书面图像上运行identify -verbose
给了我正确的价值。
我该如何解决这个问题?
编辑 1
如果我这样做
img.read("test" + Glib::ustring(argv[0]) + ".bmp");
stats = img.statistics();
std::cout << argv[0] << ":" << stats.channel(Magick::PixelChannel::GrayPixelChannel ).minima() << std::endl;
我得到了正确的最小值(在 ImageMagick 7 中它不在 0 - 1.0 范围内(。
这里的 img 是
img.composite(mask, 0, 0, Magick::OverCompositeOp);
面具在哪里
Magick::Image newmask(Magick::Geometry(width,height),Magick::Color("white"));
newmask.strokeColor("black");
newmask.fillColor("black");
newmask.draw( Magick::DrawableCircle(xc,yc, xc,yc+rc-10) );
newmask.transparent(Magick::Color("black"));
newmask.depth(8);
mask = newmask;
请记住,您正在使用昆腾值 - 这些值在系统安装之间有所不同。
使用 value/QuantumRange
或 value*QuantumScale
计算 0
和 1.0
之间的显示值。
stats.channel(Magick::PixelChannel::GrayPixelChannel).minima()/QuantumRange
例如。。。
// sample_program.cpp
#include <iostream>
#include <Magick++.h>
using namespace std;
using namespace Magick;
int main(int argc, const char * argv[]) {
InitializeMagick(argv[0]);
Image img("rose:");
img.type(GrayscaleType);
auto stats = img.statistics();
cout << stats.channel(PixelChannel::GrayPixelChannel).minima()/QuantumRange << endl;
return 0;
}
编译和执行...
$ ./sample_program
=> 0.14478
与 CLI 应用程序比较
$ convert rose: -type GrayScale -format '%[fx:minima]n' info:
=> 0.144778
略有四舍五入,但这在std:cout
.
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- 这个x86汇编代码是如何接收和存储子程序返回的数据的
- 避免在统计数据和重命名之间进行TOCTOU(检查时间,使用时间)
- 是否有一些有意义的统计数据来证明保持有符号整数算术溢出未定义是合理的
- Magick++ ImageMagick 7.0.5-4 Q16 的统计数据x86_64问题
- 在调试中,如何知道对函数的重复调用中参数的统计数据(max-min,average,distribution..)
- C++或 Scilab 或 Octave 或 R 中具有大量数据的统计信息
- 我可以收集mmap读/写统计数据吗
- 如何从数据缓冲区执行 x86 命令
- 巧克力游戏:输入循环,不插入循环或打印游戏统计数据
- ARM平台的数据转换(从x86/x64)
- Android C++OpenGL:无法找到统计数据
- 是否有跨平台(x86和x64)PInvoke和windows数据类型的明确指南
- 从表创建统计数据