首页 > 编程知识 正文

OpenCVPython反色函数,python opencv颜色识别

时间:2023-05-04 11:14:18 阅读:220853 作者:3103

**## OpenCV反色处理

环境 vs2019+OpenCV4.5.1**

#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>#include <opencv2imgproctypes_c.h>#include <opencv2/highgui/highgui_c.h>using namespace cv;using namespace std;int main(){ Mat src; //原图 src = imread("d:\images\im.jpg", IMREAD_UNCHANGED); if (src.empty()) { cout << "can not load image" << endl; return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input", src); //单通道图像反色处理(灰度图是单色图像) Mat gray_src; cvtColor(src, gray_src, CV_BGR2GRAY); namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("output", gray_src); /* * 使用 Mat 中的公有成员 cols 和 rows 可以获得图像的调度和宽度,使用属性 channels 表示通道数,若为灰度图像,则值为 1,若为彩色图像,则值为 3。使用 成员函数 at(int y,int x)可以用来访问图像的元素,使用时必须指定数据类型,如 image.at<uchar>(j,i),对于彩色图像,每个像素由红、绿、蓝三通道构成,因此返 回的是一个向量,向量的每一元素为一个 unsigned char 变量,如 image.at<cv::Vec3b>(j,i)[chnnel]=value; */ int height = gray_src.rows; int width = gray_src.cols; for (int row = 0; row < height; row++) { for (int col = 0; col < width; col++) { int gray = gray_src.at<uchar>(row, col); gray_src.at<uchar>(row, col) = 255 - gray; } } imshow("反色", gray_src); //三通道图像的反色 Mat dst; dst.create(src.size(), src.type()); height = src.rows; width = src.cols; //获得通道数 int nc = src.channels(); //b,g,r 三通道 int b; int g; int r; /*for (int row = 0; row < height; row++) { for (int col = 0; col < width; col++) { b = src.at<Vec3b>(row, col)[0]; g= src.at<Vec3b>(row, col)[1]; r = src.at<Vec3b>(row, col)[2]; //对每个通道都进行反转 dst.at<Vec3b>(row, col)[0] = 255 - b; dst.at<Vec3b>(row, col)[1] = 255 - g; dst.at<Vec3b>(row, col)[2] = 255 - r; } }*/ //api函数 //bitwise_not(src, dst); //只保留红色通道的值 /*for (int row = 0; row < height; row++) { for (int col = 0; col < width; col++) { b = src.at<Vec3b>(row, col)[0]; g = src.at<Vec3b>(row, col)[1]; r = src.at<Vec3b>(row, col)[2]; //这里是将b和g通道 dst.at<Vec3b>(row, col)[0] = 0; dst.at<Vec3b>(row, col)[1] = 0; dst.at<Vec3b>(row, col)[2] = r; } } imshow("三通道反色", dst);*/ waitKey(0); return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。