// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;
Mat iteratorDeal(Mat& img);
Mat pointDeal_uchar(Mat& img);
Mat pointDeal_Vec3b(Mat& img);
Mat atDeal_Vec3b(Mat& img);
int main()
{
Mat img = imread("..\\..\\bin\\image\\1.jpeg", 1);
if (img.empty()) {
cout << "图片读取失败" << endl;
return -2;
}
imshow("img", img);
//Mat dst = iteratorDeal(img);
//imshow("dst", dst);
//Mat dst = pointDeal_uchar(img);
//imshow("dst", dst);
//Mat dst = pointDeal_Vec3b(img);
//imshow("dst", dst);
Mat dst = atDeal_Vec3b(img);
imshow("dst", dst);
waitKey(0);
destroyAllWindows();
return 0;
}
Mat atDeal_Vec3b(Mat& img) {
Mat dst = img.clone();
int row = dst.rows;
int col = dst.cols;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
dst.at<Vec3b>(i, j)[0] = 255; // B
dst.at<Vec3b>(i, j)[1] = 0;
dst.at<Vec3b>(i, j)[2] = 0;
}
}
return dst;
}
Mat pointDeal_uchar(Mat& img) {
Mat dst = img.clone();
int row = dst.rows;
int col = dst.cols * dst.channels();
for (int i = 0; i < row; i++) {
uchar* data = dst.ptr<uchar>(i);
for (int j = 0; j < col; j++) {
switch (j % 3)
{
case 0: {
data[j] = 0;
break;
}
case 1: {
data[j] = 255;
break;
}
case 2: {
data[j] = 0;
break;
}
default:
break;
}
}
}
return dst;
}
Mat pointDeal_Vec3b(Mat& img) {
Mat dst = img.clone();
int row = dst.rows;
int col = dst.cols;
for (int i = 0; i < row; i++) {
Vec3b* data = dst.ptr<Vec3b>(i);
for (int j = 0; j < col; j++) {
data[j][0] = 0;
data[j][1] = 0;
data[j][2] = 255;
}
}
return dst;
}
Mat iteratorDeal(Mat& img) {
Mat dst = img.clone();
Mat_<Vec3b>::iterator it = dst.begin<Vec3b>();
Mat_<Vec3b>::iterator itend = dst.end<Vec3b>();
for (; it != itend; it++) {
(*it)[0] = 0;
(*it)[1] = 255;
(*it)[2] = 0;
}
return dst;
}
版权声明:本文为weixin_41791402原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。