RGB图像转灰度图
RGB图像转换为灰度图时通常使用:
进行转换,以下尝试通过其他对图像像素操作的方式将RGB图像转换为灰度图像。
#include<opencv2/opencv.hpp> #include<math.h> using namespace cv; int main() { //像素操作 Mat src,dst; src = imread("E:/image/image/daibola.jpg"); if(src.empty()) { printf("can not load image \n"); return -1; } namedWindow("input"); imshow("input",src); dst.create(src.size(), src.type()); for(int row = 0; row < src.rows; row++) { for(int col = 0; col < src.cols; col++) { int b = src.at<Vec3b>(row, col)[0]; int g = src.at<Vec3b>(row, col)[1]; int r = src.at<Vec3b>(row, col)[2]; dst.at<Vec3b>(row, col)[0] = max(r,max(g,b)); dst.at<Vec3b>(row, col)[1] = max(r,max(g,b)); dst.at<Vec3b>(row, col)[2] = max(r,max(g,b)); } } namedWindow("output"); imshow("output",dst); waitKey(); }
同理使用min(r,min(g,b))可以看到由于选择了较小的灰度值图像会明显变暗:
图像线性增强
通过对图像像素操作(线性变换),实现图像的线性增强。
#include<opencv2/opencv.hpp> #include<math.h> using namespace cv; int main() { Mat src1, dst; src1 = imread("E:/image/image/im1.jpg"); if(src1.empty()) { printf("can not load im1 \n"); return -1; } double alpha = 1.2, beta = 50; dst = Mat::zeros(src1.size(), src1.type()); for(int row = 0; row < src1.rows; row++) { for(int col = 0; col < src1.cols; col++) { if(src1.channels() == 3) { int b = src1.at<Vec3b>(row, col)[0]; int g = src1.at<Vec3b>(row, col)[1]; int r = src1.at<Vec3b>(row, col)[2]; dst.at<Vec3b>(row, col)[0] = saturate_cast<uchar>(b*alpha + beta); dst.at<Vec3b>(row, col)[1] = saturate_cast<uchar>(g*alpha + beta); dst.at<Vec3b>(row, col)[2] = saturate_cast<uchar>(r*alpha + beta); } else if (src1.channels() == 1) { float v = src1.at<uchar>(row, col); dst.at<uchar>(row, col) = saturate_cast<uchar>(v*alpha + beta); } } } namedWindow("output",CV_WINDOW_AUTOSIZE); imshow("output", dst); waitKey(); return 0; }
掩膜操作调整图像对比度
使用一个3×3掩模增强图像对比度:
#include<opencv2/opencv.hpp> #include<math.h> using namespace cv; int main() { Mat src, dst; src = imread("E:/image/image/daibola.jpg"); CV_Assert(src.depth() == CV_8U); if(!src.data) { printf("can not load image \n"); return -1; } src.copyTo(dst); for(int row = 1; row<(src.rows - 1); row++) { const uchar* previous = src.ptr<uchar>(row - 1); const uchar* current = src.ptr<uchar>(row); const uchar* next = src.ptr<uchar>(row + 1); uchar* output = dst.ptr<uchar>(row); for(int col = src.channels(); col < (src.cols - 1)*src.channels(); col++) { *output = saturate_cast<uchar>(9 * current[col] - 2*previous[col] - 2*next[col] - 2*current[col - src.channels()] - 2*current[col + src.channels()]); output++; } } namedWindow("image", CV_WINDOW_AUTOSIZE); imshow("image",dst); waitKey(); return 0; }
像素重映射
利用cv::remap实现像素重映射;
cv::remap参数说明:
Remap( InputArray src,// 输入图像 OutputArray dst,// 输出图像 InputArray map1,// 映射表1(CV_32FC1/CV_32FC2) InputArray map2,// 映射表2(CV_32FC1/CV_32FC2) int interpolation,// 选择的插值 int borderMode,// 边界类型(BORDER_CONSTANT) const Scalar borderValue// 颜色 )
插值方法:
CV_INTER_NN =0, CV_INTER_LINEAR =1, CV_INTER_CUBIC =2, CV_INTER_AREA =3, CV_INTER_LANCZOS4 =4
通过像素重映射实现图像垂直翻转:
#include<opencv2/opencv.hpp> using namespace cv; int main() { Mat src,dst; src = imread("E:/image/image/daibola.jpg"); if(src.empty()) { printf("can not load image \n"); return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input", src); Mat mapx,mapy; mapx.create(src.size(), CV_32FC1); mapy.create(src.size(), CV_32FC1); for(int row = 0; row < src.rows; row++) { for(int col = 0; col < src.cols; col++) { mapx.at<float>(row, col) = col; mapy.at<float>(row, col) = src.rows - row - 1; } } remap(src, dst, mapx, mapy, CV_INTER_NN, BORDER_CONSTANT, Scalar(0,255,255)); namedWindow("output", CV_WINDOW_AUTOSIZE); imshow("output",dst); waitKey(); return 0; }
以上这篇opencv3/C++图像像素操作详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 明达年度发烧碟MasterSuperiorAudiophile2021[DSF]
- 英文DJ 《致命的温柔》24K德国HD金碟DTS 2CD[WAV+分轨][1.7G]
- 张学友1997《不老的传说》宝丽金首版 [WAV+CUE][971M]
- 张韶涵2024 《不负韶华》开盘母带[低速原抓WAV+CUE][1.1G]
- lol全球总决赛lcs三号种子是谁 S14全球总决赛lcs三号种子队伍介绍
- lol全球总决赛lck三号种子是谁 S14全球总决赛lck三号种子队伍
- 群星.2005-三里屯音乐之男孩女孩的情人节【太合麦田】【WAV+CUE】
- 崔健.2005-给你一点颜色【东西音乐】【WAV+CUE】
- 南台湾小姑娘.1998-心爱,等一下【大旗】【WAV+CUE】
- 【新世纪】群星-美丽人生(CestLaVie)(6CD)[WAV+CUE]
- ProteanQuartet-Tempusomniavincit(2024)[24-WAV]
- SirEdwardElgarconductsElgar[FLAC+CUE]
- 田震《20世纪中华歌坛名人百集珍藏版》[WAV+CUE][1G]
- BEYOND《大地》24K金蝶限量编号[低速原抓WAV+CUE][986M]
- 陈奕迅《准备中 SACD》[日本限量版] [WAV+CUE][1.2G]