이미지위 제가 정한 위치에 좌표에 이미지 변환해서 가지고 오고 싶습니다.
하지만 밑에 보이는 봐와 같이 값을 지정해주었지만 에러가 납니다.
어떤이유인지는 모르겠습니다.
Mat dst = new Mat(4,1,CvType.CV_32FC2);
Mat src = new Mat(4,1,CvType.CV_32FC2);
//dst.put(0,0, 0.0,original_image.width(), original_image.height(),original_image.width(), original_image.height(),0.0);
//src.put(0,0, 0.0 , 200.0 , 200.0 , 200.0 , 200.0 , 0.0);
dst.put(0,0,0.0,0.0,1600.0,0.0, 0.0,2500.0,1600.0,2500.0);
src.put(0,0,407.0,74.0,1606.0,74.0,420.0,2589.0,1698.0,2589.0);
-------------------------------------------------------------------------------------------------------------------------------
에러 logcat 입니다.
05-28 11:00:35.238: E/AndroidRuntime(7347): CvException [org.opencv.core.CvException: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:97: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean)
--------------------------------------------------------------------------------------------------------------------------------
public class MainActivity extends Activity implements OnClickListener{
private Button btnProc;
private ImageView imageView;
private Bitmap bmp,bmp1;
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:{
} break;
default:{
super.onManagerConnected(status);
} break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// btnProc = (Button) findViewById(R.id.btn_gray_process);
// imageView = (ImageView) findViewById(R.id.image_view);
// bmp = BitmapFactory.decodeResource(getResources(),R.drawable.a2);
// imageView.setImageBitmap(bmp);
// btnProc.setOnClickListener(this);
btnProc = (Button) findViewById(R.id.btn_gray_process);
imageView = (ImageView) findViewById(R.id.image_view);
btnProc.setOnClickListener(this);
}
public void onClick(View v) {
// Mat rgbMat = new Mat();
// Mat grayMat = new Mat();
//
// Utils.bitmapToMat(bmp, rgbMat);
// Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);
// Bitmap grayBmp = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(), Config.RGB_565);
// Utils.matToBitmap(grayMat, grayBmp);
//
// imageView.setImageBitmap(grayBmp);
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.a2);
Mat original_image = new Mat();
Utils.bitmapToMat(bmp, original_image);
Mat dst = new Mat(4,1,CvType.CV_32FC2);
Mat src = new Mat(4,1,CvType.CV_32FC2);
//dst.put(0,0, 0.0,original_image.width(), original_image.height(),original_image.width(), original_image.height(),0.0);
//src.put(0,0, 0.0 , 200.0 , 200.0 , 200.0 , 200.0 , 0.0);
dst.put(0,0,0.0,0.0,1600.0,0.0, 0.0,2500.0,1600.0,2500.0);
src.put(0,0,407.0,74.0,1606.0,74.0,420.0,2589.0,1698.0,2589.0);
// Mat perspectiveTransform = Imgproc.getPerspectiveTransform(src, dst);
// bmp1 = Bitmap.createBitmap(400, 400, Config.RGB_565);
// Utils.matToBitmap(perspectiveTransform, bmp1);
Mat perspectiveTransform = Imgproc.getPerspectiveTransform(src, dst);
Mat cropped_image = original_image.clone();
Imgproc.warpPerspective(src, cropped_image, perspectiveTransform, new Size(512,512));
bmp1 = Bitmap.createBitmap(400, 400, Config.RGB_565);
//왜 에러가 뜨지?
Utils.matToBitmap(cropped_image, bmp1);
imageView.setImageBitmap(bmp1);
}
public void onResume(){
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this,mLoaderCallback);
}
}