我有想從簡歷::墊轉換爲GPU ::墊一個問題。我正在使用VS2012 Win7 x64。的OpenCV |墊到gpuMat在內存位置異常?
這是代碼:
#include "opencv2/imgproc/imgproc.hpp"
#include <opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
#include <opencv2\gpu\gpu.hpp>
#include "cv.h"
#include "cxcore.h"
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace cv;
using namespace cv::gpu;
int main() {
Mat src = cv::imread("pic1.jpg");
gpu::GpuMat d_src, d_dst;
d_src.upload(src);
gpu::bilateralFilter(d_src,d_dst, -1, 50, 7);
gpu::Canny(d_dst, d_dst, 35, 200, 3);
Mat dst(d_dst);
imwrite("out.jpg", dst);
return 0;
}
我使用這麼多的包括,因爲在同一個文件我還有其他的功能聲明。
這是LIB文件我包括:
opencv_core246d.lib
opencv_imgproc246d.lib
opencv_highgui246d.lib
opencv_ml246d.lib
opencv_video246d.lib
opencv_features2d246d.lib
opencv_calib3d246d.lib
opencv_objdetect246d.lib
opencv_contrib246d.lib
opencv_legacy246d.lib
opencv_flann246d.lib
opencv_nonfree246d.lib
opencv_photo246d.lib
opencv_stitching246d.lib
opencv_superres246d.lib
opencv_ts246d.lib
這是我所得到的,當我嘗試編譯
First-chance exception at 0x000007FEFDD29E5D in CVtest.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000025F8D0.
First-chance exception at 0x000007FEFDD29E5D in CVtest.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000025F8D0.
Unhandled exception at at 0x000007FEFDD29E5D in CVtest.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000025F8D0.
The program '[6592] CVtest.exe' has exited with code -1073741510 (0xc000013a).
這表明每當我試圖墊子和gpuMat之間切換。
如何可以解決這個問題?
我在代碼中看到的第一個錯誤是,您使用下載方法,而不是上傳方法,以便從cpu內存複製圖像到設備內存 –
是的你是對的,我忘了改變它。無論如何,上傳和下載導致相同的錯誤。 – illid44n