#include "iostream"
#include "cv.h"
#include "highgui.h"
#include "cvaux.h"
#include "cxmisc.h"
#include "math.h"
using namespace cv;
using namespace std;
int main(){
int height, width, x, y, i, minX, minY, maxX, maxY;
char imgFileName[100];
IplImage *origImage = cvLoadImage("data set baybayin/0000.jpg", -1);
height = origImage->height;
width = origImage->width;
IplImage *grayImage = cvCreateImage(cvSize(width, height), 8, 1);
IplImage *binImage = cvCreateImage(cvSize(width, height), 8, 1);
//Pre-processing phase
//image cleaning
cvCvtColor(origImage, grayImage, CV_BGR2GRAY);
cvDilate(grayImage, grayImage, NULL, 1);
cvSmooth(grayImage, grayImage, CV_GAUSSIAN, 21, 21, 0, 0);
//image binarization
cvThreshold(grayImage, binImage, 120, 255, CV_THRESH_BINARY);
//cvNormalize(binImage,binImage,0,1,CV_MINMAX);
//getting image info
minX = width;
minY = height;
maxX = 0;
maxY = 0;
//image cropping
CvScalar s;
//finding the boundaries
for (x=0; x<width-1; x++){
for(y=0; y<height-1; y++){
//getting pixel values
s = cvGet2D(binImage, y, x);
//printf("%f\n", s.val[0]);
//identifying boundaries
if (s.val[0] == 0){
//printf("HELLO");
minX = min(minX, x);
minY = min(minY, y);
maxX = max(maxX, x);
maxY = max(maxY, y);
//printf("%d\n", minY);
}
}
}
//creating rectangle
CvRect rect = cvRect(minX, minY, maxX-minX, maxY-minY);
//sets the part of the image to be cropped
cvSetImageROI(binImage, rect);
IplImage *cropImage = cvCreateImage(cvGetSize(binImage), 8, 1);
IplImage *newImage = cvCreateImage(cvSize(400, 400), 8, 1);
//copies cropped image to new declared image
cvCopy(binImage, cropImage, NULL);
//cvSaveImage("bin/binImage16.jpg", binImage);
cvSaveImage("data set baybayin/cropImage0.jpg", cropImage);
cvResetImageROI(binImage);
cvReleaseImage(&origImage);
cvReleaseImage(&binImage);
cvReleaseImage(&grayImage);
cvReleaseImage(&cropImage);
cvReleaseImage(&newImage);
}
안녕하세요. 위의 코드에서 여러 이미지를로드하는 방법은 무엇입니까? 이 코드는 하나의 이미지 만로드하고 처리하기 때문에 온라인에서 몇 가지 지침을 간신히 이해할 수 있습니다. 나는 미안하다. 나는 초보자 다. 또한 처리 후 코드에 대해 묻고 싶습니다. 새 파일과 처리 된 이미지를 해당 파일 이름을 가진 다른 폴더에 어떻게 저장할 수 있습니까? 감사.여러 이미지로드 및 처리
나는 당신의 지시를 쉽게 얻지 못한다, 미안. 특정 파일에서 문자열을 읽는 방법은 어떻습니까? – cmsl
그들에 대해? – misha
필자는 텍스트 파일에 모든 파일 이름을 저장하고 모든 파일을 읽음으로써 프로그램이 필요한 이미지를 찾을 수 있도록했습니다. 다음을 포함하는 텍스트 문서처럼 : 00000.jpg 00001.jpg 00002.jpg 등. 이 텍스트 문서를 읽고 나면 이미지가로드됩니다. 그러나, 그것을 구현하는 방법을 모르겠습니다. – cmsl