c# - 在 OpenCV 与 C# 位图中读取 jpg 文件

标签 c# c++ opencv bitmap jpeg

经过多次实验,我发现在C++(OpenCV)中读取彩色jpg文件:

自动温度(cv::imread("xxx.jpg");

不同于使用 C# 位图读取同一个文件:

var temp=new bitmap("xxx.jpg");

结果不同。如果我对它们都应用一些算法,比如 GoodFeatureToTrack,会有显着的差异。

问题是: 如何在OpenCV中采用C#加载位图的方式。因此,如果我直接在 native 部分或从 C# Wrapper 加载我的图像,我会得到相同的结果。

谢谢

编辑:

此代码是一个 c++ 函数,它采用一些结构,其中包含在托管程序 (c#) 中加载的图像,然后在 opencv 中加载相同的图像并比较它们。..有一个不同的!

    extern "C" _declspec (dllexport) void test_diff(authenticator_reference_structure* referecnces){
    auto image(cv::imread("white.jpg"));

    cv::imshow("opencv", image);
    auto wrpped(referecnces->references->images->image.getMat());

    cv::imshow("C#", wrapped);
    cv::Mat ss;
    cv::absdiff(image, wrapped, ss);

    cv::threshold(ss, ss, 1, 255, CV_THRESH_BINARY);
    cv::imshow("Diff", ss);
    cv::waitKey();

}

the thresholded diffrences image

最佳答案

也许您可以使用 getImage() 而不是 getMat()

这里正在解决一个类似的问题(在 C# 而不是 C++ 中使用 openCV)
http://www.emgu.com/forum/viewtopic.php?t=188

关于c# - 在 OpenCV 与 C# 位图中读取 jpg 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32567325/

相关文章:

c++ - 尝试使用 ffmpeg 的 Unresolved external

visual-c++ - 在 Windows 应用商店应用程序上使用 OpenCV 人脸识别的最佳方式是什么?

java - 搜索策略以有效地从服务或服务器加载数据?

c# - 是否可以结合使用 ValidationRules 和 INotifyDataErrorInfo 进行 wpf 验证?

c# - 带有数据表的 asp.net mvc 模式弹出窗口

c# - 在 ServiceRoute 中使用通配符

c++ - 库在编译和链接时如何工作

C++ vector 和结构指针

c++ - 如何区分OpenCV相机?

c++ - 人脸地标和使用光流稳定