經過多次實驗,我發現,在C閱讀彩色JPG文件++(OpenCV的):讀取JPG文件在OpenCV中對C#位圖
auto temp(cv::imread("xxx.jpg");
是使用C#位圖讀同一個文件的不同:
var temp=new bitmap("xxx.jpg");
結果是不同的。如果我在它們上應用了一些算法,就像GoodFeatureToTrack一樣,這是值得注意的差異。
問題是: 如何在OpenCV中調用C#位圖加載的方式。所以,如果我直接在本機部分或從C#包裝器加載圖像,我會得到相同的結果。
由於
編輯:
此碼是採取一些結構包含該裝填在manged程序(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();
}
什麼類型的圖像?灰度?顏色?你有沒有嘗試將不同的標誌傳遞給'imread'? –
彩色圖像 「不同的標誌」爲什麼? –
您可以對16或32位圖像使用'CV_LOAD_IMAGE_ANYDEPTH',或將'CV_LOAD_IMAGE_GRAYSCALE'轉換爲灰度。默認值是'CV_LOAD_IMAGE_COLOR',這將導致3通道圖像。你的圖片是否有alpha通道? –