copy a part of image with openCv c++
c, c++, image-processing, opencv
Solution
What you are trying to accomplish can be done by setting a ROI (Region of Interest) on that image and copying that portion defined by the ROI to a new image.
You can see a demo using `IplImage` on this post.
These posts show uses of ROI to solve different scenarios:
- MultiCrops in same image
- Setting ROI with mouse from a rectangle on a video
- Put Image in contour (OpenCV)
- IplImage inside IplImage
It's important to note that your code is using the C interface of OpenCV. The C++ interface offers `cv::Mat`, which is the equivalent of `IplImage`. In other words, what you are looking for is a C solution to the problem.
Problem
I am using opencv and I want to create an image from a part of another image. I didn't find a function that do that so I try to implement my Idea which consist of copying the image pixel by pixel but in vain I didn't get the result I am waiting for. Any one has another Idea 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; } ```