用substr
#include "cv.h" #include "highgui.h" #include <iostream> #include <fstream> #include <string.h> using namespace std; using namespace cv; int main() { ifstream infile; infile.open("/media/hdc/xing/DeepLabV2/dataset/cityspace/gtFine/gtFine_color.txt"); string tmp; while(getline(infile,tmp)){ string str = tmp.substr(1); string gt_dir = "/media/hdc/xing/DeepLabV2/dataset/cityspace/gtFine" + str; string dis_dir = "/media/hdc/xing/DeepLabV2/cityspace" + str; // cout << gt_dir << endl; // cout << dis_dir << endl; Mat img; img = imread(gt_dir); int col = img.cols; int row = img.rows; // cout << col << endl; // cout << row << endl; Mat result(1024, 2048, CV_8UC1, Scalar(0)); for(int i = 0;i < col;i++){ for(int j = 0;j < row;j++){ //cout << (int)img.at<Vec3b>(j,i)[0] << " " << (int)img.at<Vec3b>(j,i)[1] << " " << (int)img.at<Vec3b>(j,i)[2] << " " << j << " " << i << endl; int blue = img.at<Vec3b>(j,i)[0]; int green = img.at<Vec3b>(j,i)[1]; int red = img.at<Vec3b>(j,i)[2]; //uchar number = img.at<Vec3b>(j,i)[0]; //cout << number << endl; if(blue == 128 && green == 64 && red == 128){ result.at<uchar>(j,i) = 1; } } } imwrite(dis_dir,result); } return 0; }