Tôi đang sử dụng opencv và tôi muốn tạo hình ảnh từ một phần của hình ảnh khác.sao chép một phần của hình ảnh bằng openCv C++
Tôi không tìm thấy chức năng làm điều đó vì vậy tôi cố gắng triển khai ý tưởng của mình, bao gồm sao chép điểm ảnh theo pixel nhưng vô ích tôi không nhận được kết quả mà tôi đang đợi.
Bất kỳ ai có ý tưởng khác
Code:
#include "cv.h"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
int main(int argc,char** argv) {
IplImage * img =0;
uchar *data;
int i,j,k;
int height,width,widthStep,nChannels;
img=cvLoadImage(argv[1],3);
height =img->height;
width = img->width;
widthStep= img->widthStep;
nChannels = img->nChannels;
data=(uchar*)img->imageData;
IplImage* img1=cvCreateImage(cvSize(height/2,width/2),IPL_DEPTH_8U,nChannels);
for(i=0;i<height/2;i++){
for(j=0;j<width/2;j++){
for(k=0;k<3;k++){
img1->imageData[i*widthStep+j*nChannels]=data[i*widthStep+j*nChannels];
}
}
}
cvShowImage("image_Originale2",img1);
cvWaitKey(0);
cvReleaseImage(&img);
return 0;
}
Nó không phải tốt hơn theo định nghĩa, đó là khác nhau; OpenCV cũ so với api C++ 'mới'. Thật vậy, nhưng công cụ IplImage cũ sẽ được khấu hao trong OpenCV 3, và tôi khuyên mọi người đọc nó để chuyển sang cv mới :: Kiểu Mat. – TimZaman