2017-01-15 11 views
2

私はこの操作を実行するためにopencv dllを利用して、角度度の画像Mat srcを回転させるために以下の方法を使用しています。 しかし、出力イメージのサイズを変更して再スケーリングする必要があります。 原点が保持されるように回転角に応じてスケーリング係数を決定する方法。現在、スケーリング係数は1.0です。 また、回転角度に応じて画像の新しいサイズをどのように操作する必要がありますか? 1. The image obtained on 90 degrees rotation: 2. Desired result: どのように画像番号を取得できますか。 2?Javaで回転(opencvを使用)で画像を拡大/縮小する方法は?

private static Mat deskew(Mat src, double angle) { 
    Point center = new Point(src.width()/2, src.height()/2); 
    Mat rotImage = Imgproc.getRotationMatrix2D(center, angle, 1.0); 
     Size size = new Size(src.width(), src.height()); 

     Imgproc.warpAffine(src, src, rotImage, size, Imgproc.INTER_LINEAR 
       + Imgproc.CV_WARP_FILL_OUTLIERS); 
     return src; 
    } 

答えて

1

このコードは、それが感謝を:)働い

void rotateMatCW(const cv::Mat& src, cv::Mat& dst, const double& deg) 
    if (deg == 270 || deg == -90){ 
     // Rotate clockwise 270 degrees 
     cv::transpose(src, dst); 
     cv::flip(dst, dst, 0); 
    } 
    else if (deg == 180 || deg == -180){ 
     // Rotate clockwise 180 degrees 
     cv::flip(src, dst, -1); 
    } 
    else if (deg == 90 || deg == -270){ 
     // Rotate clockwise 90 degrees 
     cv::transpose(src, dst); 
     cv::flip(dst, dst, 1); 
    } 
    else if (deg == 360 || deg == 0 || deg == -360){ 
     if (src.data != dst.data){ 
      src.copyTo(dst); 
     } 
    } 
    else 
    { 
     cv::Point2f src_center(src.cols/2.0F, src.rows/2.0F); 
     cv::Mat rot_mat = getRotationMatrix2D(src_center, 360 - deg, 1.0); 
     warpAffine(src, dst, rot_mat, src.size()); 
    } 
} 
+0

有用であるかどうかを確認してください! –

1
public static void main(String[] args) { 
    Mat source = Imgcodecs.imread("e://src//lena.jpg"); 
    Mat rotMat = new Mat(2, 3, CvType.CV_32FC1); 
    Mat destination = new Mat(source.rows(), source.cols(), source.type()); 
    Point center = new Point(destination.cols()/2, destination.rows()/2); 
    rotMat = Imgproc.getRotationMatrix2D(center, 30, 1); 
    Imgproc.warpAffine(source, destination, rotMat, destination.size()); 
    Imgcodecs.imwrite("E://out//lena-rotate.jpg", destination); 

} 
関連する問題