Java 如何从C++;到爪哇 #包括“opencv2/imgproc.hpp” #包括“opencv2/highgui.hpp” #包括“iostream” 使用名称空间cv; 双对比度测量(常数矩阵和img) { matdx,dy; Sobel(img,dx,CV_32F,1,0,3); Sobel(img,dy,CV_32F,0,1,3); 震级(dx,dy,dx); 返回和(dx)[0]; } int main(int argc,字符**argv) { char*filename=argc>=2?argv[1]:(char*)“lena.jpg”; Mat src=imread(文件名); if(src.data) { std::cout
对于高斯模糊,有使用Java绑定的opencv方法:Java 如何从C++;到爪哇 #包括“opencv2/imgproc.hpp” #包括“opencv2/highgui.hpp” #包括“iostream” 使用名称空间cv; 双对比度测量(常数矩阵和img) { matdx,dy; Sobel(img,dx,CV_32F,1,0,3); Sobel(img,dy,CV_32F,0,1,3); 震级(dx,dy,dx); 返回和(dx)[0]; } int main(int argc,字符**argv) { char*filename=argc>=2?argv[1]:(char*)“lena.jpg”; Mat src=imread(文件名); if(src.data) { std::cout,java,opencv,Java,Opencv,对于高斯模糊,有使用Java绑定的opencv方法: #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include "iostream" using namespace cv; double contrast_measure( const Mat&img ) { Mat dx, dy; Sobel( img, dx, CV_32F, 1, 0, 3 ); Sobel( img, d
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "iostream"
using namespace cv;
double contrast_measure( const Mat&img )
{
Mat dx, dy;
Sobel( img, dx, CV_32F, 1, 0, 3 );
Sobel( img, dy, CV_32F, 0, 1, 3 );
magnitude( dx, dy, dx );
return sum(dx)[0];
}
int main( int argc, char** argv )
{
char* filename = argc >= 2 ? argv[1] : (char*)"lena.jpg";
Mat src = imread( filename );
if(src.data)
{
std::cout << "original image : " << contrast_measure( src ) / 1e3 << std::endl;
for( int i =3; i < 80; i+=2 )
{
Mat blurred;
GaussianBlur( src, blurred, Size(i,i), 0);
imshow( "blurred image", blurred );
waitKey(200);
std::cout << "blurred image : " << contrast_measure( blurred ) / 1e3 << std::endl;
}
}
return 0;
}
&索贝尔
Imgproc.GaussianBlur(src, blurred, new Size(i,i),50);
&为了
因此,您基本上是在JAVA中以相同的结构重写代码。您能分享一下您迄今为止所做的尝试吗?我已经尝试先重写度量函数。我一直在使用sobel、magnitude和sumElems。请看您的问题刚刚获得接近票数的原因。正如小的更正:javacv是一个第三方库,wh在这里,您指的是opencv java绑定
Imgproc.Sobel(src_gray, grad_x, depth, 1, 0, 3, skala, delta, Imgproc.BORDER_DEFAULT);