在OpenCV和C#Bitmap中读取jpg文件

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

auto temp(cv :: imread(“xxx.jpg”);

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

var temp = new bitmap(“xxx.jpg”);

结果不同.如果我在它们上面应用了一些像GoodFeatureToTrack这样的算法,那么会有明显的差异.

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

谢谢

编辑:

这段代码是一个c函数,它接受一些包含在manged程序(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();

}

在OpenCV和C#Bitmap中读取jpg文件

解决方法:

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

这里也提出了类似的问题(在C#中使用openCV而不是C)
http://www.emgu.com/forum/viewtopic.php?t=188

上一篇:js鼠标滚轮滚动图片切换效果


下一篇:HTML文件截图为.jpg或其他图像