gpt4 book ai didi

c++ - 使用openCv c++复制图像的一部分

转载 作者:IT老高 更新时间:2023-10-28 23:03:42 35 4
gpt4 key购买 nike

我正在使用 opencv,我想从另一个图像的一部分创建一个图像。

我没有找到执行此操作的函数,因此我尝试实现我的想法,该想法包括逐像素复制图像,但徒劳无功,我没有得到我正在等待的结果。

每个人都有另一个想法

代码:

#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;
}

最佳答案

您应该使用 cv::Mat 的复制构造函数。比IplImage好多了:

int x = 10,
y = 20,
width = 200,
height = 200;

Mat img1, img2;
img1 = imread("Lenna.png");
img2 = img1(Rect(x, y, width, height));

关于c++ - 使用openCv c++复制图像的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15529365/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com