私は現在、CImg の機能である get_gradientXY を OpenCV のインターフェースを使用して実装する作業を行っています。そして、OpenCV の cvSobel は get_gradientXY と同じ効果がある可能性があることを発見しましたが、サンプル グラフで実験した後、出力グラフはまったく異なります。私はこれで立ち往生しています。
ここに私のテストコードがあります:
imgCv.Load("1.jpg");
imgCimg.Load("1.jpg");
IplImage* pSrcImage = imgCv.GetOpenCVImpPtr();//get pointer of src graph
IplImage* grad_x = cvCreateImage(cvGetSize(pSrcImage), pSrcImage->depth, 3);
IplImage* grad_y = cvCreateImage(cvGetSize(pSrcImage), pSrcImage->depth, 3);
cvSobel(pSrcImage,grad_x,1,0,3);
cvSobel(pSrcImage,grad_y,0,1,3);
std::string filename1 = "gradcvx.jpg";
std::string filename2 = "gradcvy.jpg";
cvSaveImage(filename1.data(), grad_x);
cvSaveImage(filename2.data(), grad_y);
//*****
cimg_library::CImgList<unsigned char> gradImages = imgCimg.GetCImg().get_gradientXY(2);
gradImages[0].save("gradcimgx.jpg");
gradImages[1].save("gradcimgy.jpg");
また、gradcvx.jpg は gradcimgx.jpg とはまったく異なります。なぜだろうと思います。ありがとうございました。