将像素值写入空白矩阵
Writing pixel value to blank matrix
遇到了一些问题。举个简单的例子,比如说我想查找灰度图像的强度值,并将其写入一个新的阵列,但假设将强度更改一定的量。我该如何使用opencv进行此操作?我一直在尝试一些类似的东西来尝试和练习:
int main(int argc, char** argv){
Mat img = imread(argv[1], CV_LOAD_IMAGE_UNCHANGED), img_grey, dst;
if (img.empty())
{
return -1;
}
cvtColor(img, img_grey, CV_BGR2GRAY);
dst = Mat::zeros(img_grey.size(), img_grey.type());
for
(int x = 1; x < dst.rows - 1; x++)
{
for (int y = 1; y < dst.cols - 1; y++)
{
dst.at<uchar>(y, x) = x;
}
}
namedWindow("New", CV_WINDOW_AUTOSIZE);
namedWindow("Original", CV_WINDOW_AUTOSIZE);
imshow("New", dst);
imshow("Original", img);
waitKey(0);
return 0;
}
给定访问图像的方式,您应该更改
dst.at<uchar>(y, x) = x;
至
dst.at<uchar>(x, y) = x;
查看Mat::at()
了解更多信息。
编辑:正如@Micka所指出的,你真的应该重命名你的x
和y
,因为x
通常被假设为水平轴,对应于"列方向"。正常使用情况如下:
for(int y = 0; y < mat.rows; y++)
for(int x = 0; x < mat.cols; x++)
mat.at<uchar>(y,x) = ...;
相关文章:
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何将CMSampleBufferRef/CIImage/UIImage转换为像素,例如uint8_t[]
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 如何使用 sdl2 快速绘制像素网格?
- 如何在C++中进行像素操作? - Linux
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 访问随机图像像素的快速方法,最多一次
- OpenCV 像素访问点与 at() - 不同的值
- 如何使用 freetype2 访问单色位图中的像素状态
- 尝试渲染像素坐标时,简单线条渲染失败
- 计算另一个图像像素满足条件的像素值的平均值
- 如何返回定义良好的内存部分?例如来自图像数据的像素的颜色值
- ImageMagick C 版本7在空白图像中修改像素值
- 在 OpenCV 中显式复制像素值时出现空白帧
- 将像素值写入空白矩阵