마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Opencv 이미지 변환

+1 추천
이미지위 제가 정한 위치에 좌표에 이미지 변환해서 가지고 오고 싶습니다.
하지만 밑에 보이는 봐와 같이 값을 지정해주었지만 에러가 납니다. 
어떤이유인지는 모르겠습니다.
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); 
 
}
slee2540 (470 포인트) 님이 2014년 5월 28일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...